首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JavaScript中对选项列表中的多个字段排序

如何在JavaScript中对选项列表中的多个字段排序
EN

Stack Overflow用户
提问于 2018-08-31 23:30:22
回答 2查看 103关注 0票数 2

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

代码语言:javascript
复制
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

我目前使用的是:

代码语言:javascript
复制
$("#serviceCoverDropdown").html($('#serviceCoverDropdown option').sort(function(x, y) {
  return $(x).val() < $(y).val() ? -1 : 1;
 }))

这会正确地对aString和aNumber进行排序,但是它不能很好地将anotherNumber组合在一起,特别是当它有2位或更多数字时,比如10

有什么想法吗?非常感谢

EN

回答 2

Stack Overflow用户

发布于 2018-08-31 23:33:41

尝试在生成HTML之前对响应进行排序:

代码语言:javascript
复制
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>';
}
票数 1
EN

Stack Overflow用户

发布于 2018-08-31 23:35:06

除了Peter Van Drunen所说的,尝试这样对数组进行排序:

代码语言:javascript
复制
response.sort(function (a, b) {
    return a.aString.localeCompare(b.aString) || a.aNumber - b.aNumber;
});

根据示例进行更新:

代码语言:javascript
复制
response.sort(function (a, b) {

    return (
        a.aNumber.localeCompare(b.aNumber)
        || a.aString - b.aString
        || a.anotherNumber - b.anotherNumber
    );

});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52118662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档