我使用jQuery为下拉菜单动态创建一个选项列表,如下所示:
for(var i =0 ; i < response.length ; i++){
options += '<option value="'stuff'">' + response[i].aNumber+'-'+ response[i].aString+'-'+response[i].anotherNumber + '</option>';
}我要做的是按字符串aString对选项列表进行排序,其次是按aNumber排序,第三是按anotherNumber排序。
例如,我希望它看起来像Cat-1-1 Cat-2-1 Cat-2-3 Dog-1-1
我目前使用的是:
$("#serviceCoverDropdown").html($('#serviceCoverDropdown option').sort(function(x, y) {
return $(x).val() < $(y).val() ? -1 : 1;
}))这会正确地对aString和aNumber进行排序,但是它不能很好地将anotherNumber组合在一起,特别是当它有2位或更多数字时,比如10
有什么想法吗?非常感谢
发布于 2018-08-31 23:33:41
尝试在生成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>';
}发布于 2018-08-31 23:35:06
除了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
);
});https://stackoverflow.com/questions/52118662
复制相似问题