在 jquery 和 ecmascript6 中获得最高的属性数
get highest attribute number in jquery and ecmascript6
正在尝试获取具有相同数据属性的所有选择的最大值。但收到错误
{ "message": "Uncaught TypeError: undefined is not a function",
"filename": "https://stacksnippets.net/js", "lineno": 37, "colno":
34 }
请 运行 下面的代码片段,我希望它能输出 3,因为这是最高的响应组编号,question.id 为 1
$(document).ready(function() {
let question = {
Id: 1
};
let responseGroupNumber = Math.max(...$(`select[data-questionid = ${question.Id}]`)
.map(x => $(x)
.attr('data-responsegroupnumber')));
console.log(responseGroupNumber);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select data-questionid="1" data-responsegroupnumber="1">
<option>one</option>
<option>two</option>
<option>three</option>
</select>
<select data-questionid="1" data-responsegroupnumber="2">
<option>one</option>
<option>two</option>
<option>three</option>
</select>
<select data-questionid="1" data-responsegroupnumber="3">
<option>one</option>
<option>two</option>
<option>three</option>
</select>
映射前需要使用jQuery.get()
函数:
如果不这样做,您将使用 jQuery .map()
method instead of Array#map
$(document).ready(function() {
let question = {
Id: 1
};
let responseGroupNumber = Math.max(...$(`select[data-questionid = ${question.Id}]`).get().map(x => $(x).attr('data-responsegroupnumber')));
console.log(responseGroupNumber);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select data-questionid="1" data-responsegroupnumber="1">
<option>one</option>
<option>two</option>
<option>three</option>
</select>
<select data-questionid="1" data-responsegroupnumber="2">
<option>one</option>
<option>two</option>
<option>three</option>
</select>
<select data-questionid="1" data-responsegroupnumber="3">
<option>one</option>
<option>two</option>
<option>three</option>
</select>
另一个可能的实现是:
$(document).ready(function() {
let question = {
Id: 1
};
var selects = $(`select[data-questionid=${question.Id}]`).toArray();
var dataGroupNumber = selects.map(select => ($(select).attr('data-
responsegroupnumber')));
let responseGroupNumber = Math.max.apply(null, dataGroupNumber);
console.log(responseGroupNumber);
});
Math.max.apply(null, dataGroupNumber) 而不是在 Math.max( ... );
中展开数组
正在尝试获取具有相同数据属性的所有选择的最大值。但收到错误
{ "message": "Uncaught TypeError: undefined is not a function",
"filename": "https://stacksnippets.net/js", "lineno": 37, "colno": 34 }
请 运行 下面的代码片段,我希望它能输出 3,因为这是最高的响应组编号,question.id 为 1
$(document).ready(function() {
let question = {
Id: 1
};
let responseGroupNumber = Math.max(...$(`select[data-questionid = ${question.Id}]`)
.map(x => $(x)
.attr('data-responsegroupnumber')));
console.log(responseGroupNumber);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select data-questionid="1" data-responsegroupnumber="1">
<option>one</option>
<option>two</option>
<option>three</option>
</select>
<select data-questionid="1" data-responsegroupnumber="2">
<option>one</option>
<option>two</option>
<option>three</option>
</select>
<select data-questionid="1" data-responsegroupnumber="3">
<option>one</option>
<option>two</option>
<option>three</option>
</select>
映射前需要使用jQuery.get()
函数:
如果不这样做,您将使用 jQuery .map()
method instead of Array#map
$(document).ready(function() {
let question = {
Id: 1
};
let responseGroupNumber = Math.max(...$(`select[data-questionid = ${question.Id}]`).get().map(x => $(x).attr('data-responsegroupnumber')));
console.log(responseGroupNumber);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select data-questionid="1" data-responsegroupnumber="1">
<option>one</option>
<option>two</option>
<option>three</option>
</select>
<select data-questionid="1" data-responsegroupnumber="2">
<option>one</option>
<option>two</option>
<option>three</option>
</select>
<select data-questionid="1" data-responsegroupnumber="3">
<option>one</option>
<option>two</option>
<option>three</option>
</select>
另一个可能的实现是:
$(document).ready(function() {
let question = {
Id: 1
};
var selects = $(`select[data-questionid=${question.Id}]`).toArray();
var dataGroupNumber = selects.map(select => ($(select).attr('data-
responsegroupnumber')));
let responseGroupNumber = Math.max.apply(null, dataGroupNumber);
console.log(responseGroupNumber);
});
Math.max.apply(null, dataGroupNumber) 而不是在 Math.max( ... );
中展开数组