如何在JavaScript中对选项列表中的多个字段进行排序
我使用jQuery动态创建下拉菜单的选项列表,如下所示:如何在JavaScript中对选项列表中的多个字段进行排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我使用jQuery动态创建下拉菜单的选项列表,如下所示: for(var i =0 ; i < response.length ; i++){ options += '<option value="'stuff'">' + response[i].aNumber+'-'+ response[i].aString+'-'+response[i].anotherNumber + '</option>'; } for(变量i=0;i
for(var i =0 ; i < response.length ; i++){
options += '<option value="'stuff'">' + response[i].aNumber+'-'+ response[i].aString+'-'+response[i].anotherNumber + '</option>';
}
for(变量i=0;i
我想做的是按字符串aString对选项列表进行排序,第二个是按一个数字,第三个是按另一个数字
例如,我希望它看起来像
Cat-1-1
第2-1类
第2-3类
狗-1-1
我目前正在使用:
$("#serviceCoverDropdown").html($('#serviceCoverDropdown option').sort(function(x, y) {
return $(x).val() < $(y).val() ? -1 : 1;
}))
$(“#serviceCoverDropdown”).html($(“#serviceCoverDropdown选项”).sort(函数(x,y){
返回$(x).val()<$(y).val()?-1:1;
}))
这可以正确地对aString&aNumber进行排序,但不能很好地将另一个数字组合在一起,特别是如果它有2个或更多的数字,比如10
有什么想法吗?非常感谢请在生成HTML之前尝试对响应进行排序:
response.sort(function(a, b) {
// do sorting logic desired here
});
// now add the option nodes
for(var i = 0; i < response.length; i++){
options += '<option value="'stuff'">' + response[i].aNumber+'-'+ response[i].aString+'-'+response[i].anotherNumber + '</option>';
}
response.sort(函数(a,b){
//这里需要排序逻辑吗
});
//现在添加选项节点
对于(变量i=0;i
除了彼得·范·德鲁宁(Peter Van Drunen)所说的之外,尝试以下方法对数组进行排序:
response.sort(function (a, b) {
return a.aString.localeCompare(b.aString) || a.aNumber - b.aNumber;
});
根据以下示例进行更新:
response.sort(function (a, b) {
return (
a.aNumber.localeCompare(b.aNumber)
|| a.aString - b.aString
|| a.anotherNumber - b.anotherNumber
);
});
谢谢James,感谢你的帮助,我的JS不是最好的,更像是一个后端开发人员。但是我得到一个错误:a。aString.localeCompare不是函数?@Ramonster如果“aString”属性不是字符串,则可能发生这种情况。看看你的例子,“aString”和“aNumber”是另一种说法。我添加了另一个例子,在你的情况下应该会更好一些。谢谢,伙计,添加了一个toString,效果很好,感谢你的帮助