Javascript 如何按两位数而不是一位数排序? $(文档).ready(函数(){ var options=$(“选择#myshp_搜索_字段_7选项”); var arr=options.map(函数{ 返回{ t:$(o).text(), v:o值 }; }).get(); arr.sort(功能(o1,o2){ 返回o1.t>o2.t-1:o1.t 10 5. 3. 11

Javascript 如何按两位数而不是一位数排序? $(文档).ready(函数(){ var options=$(“选择#myshp_搜索_字段_7选项”); var arr=options.map(函数{ 返回{ t:$(o).text(), v:o值 }; }).get(); arr.sort(功能(o1,o2){ 返回o1.t>o2.t-1:o1.t 10 5. 3. 11,javascript,jquery,html,Javascript,Jquery,Html,因此,这将对我的选择字段进行排序,但它仅对第一个数字(数字)进行排序> 10 5. 3. 11 代码的结果是:10,11,3,5 但我希望它是:3、5、10、11问题在于您正在比较字符串值。要更正此错误,请使用parseInt()将sort()逻辑中的值强制为整数: 10 5. 3. 11 使用parseInt进行数字排序: arr.sort(function(o1, o2) { var o1t = parseInt(o1.t, 10), o2t = parseInt(o2.t, 10

因此,这将对我的选择字段进行排序,但它仅对第一个数字(数字)进行排序>


10
5.
3.
11
代码的结果是:10,11,3,5


但我希望它是:3、5、10、11

问题在于您正在比较字符串值。要更正此错误,请使用
parseInt()
sort()逻辑中的值强制为整数:


10
5.
3.
11

使用parseInt进行数字排序:

arr.sort(function(o1, o2) {
  var o1t = parseInt(o1.t, 10), o2t = parseInt(o2.t, 10);
  return o1t > o2t ? 1 : o1t < o2t ? -1 : 0;
});

您可以只使用增量,通过使用减号运算符将操作数转换为数字

$(文档).ready(函数(){
$(“#myshp_搜索_字段_7选项”).sort(函数(a,b){
返回$(a).val()-$(b).val();
}).appendTo(“#myshp_search_field_7”);
});

10
5.
3.
11

谢谢,你还知道当我有一个包含数字的字符串时应该怎么做吗?在这种情况下,我建议解析该字符串。如果你搜索的话,应该会有很多问题
<select id='myshp_search_field_7'>
    <option value='10'>10</option>
    <option value='5'>5</option>
    <option value='3'>3 </option>
    <option value='11'>11 </option>
</select>
arr.sort(function(o1, o2) {
  var o1t = parseInt(o1.t, 10), o2t = parseInt(o2.t, 10);
  return o1t > o2t ? 1 : o1t < o2t ? -1 : 0;
});
arr.sort( (a, b) => parseInt(b, 10) - parseInt(a, 10) )