首页 > 解决方案 > 如何在 JavaScript 中对选项列表中的多个字段进行排序

问题描述

我正在使用 jQuery 为下拉菜单动态创建一个选项列表,如下所示:

for(var i =0 ; i < response.length ; i++){
   options += '<option value="'stuff'">' +  response[i].aNumber+'-'+ response[i].aString+'-'+response[i].anotherNumber + '</option>';
}

我要做的是按String 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

有任何想法吗?非常感谢

标签: javascriptarrayssorting

解决方案


在生成 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>';
}

推荐阅读