javascript - 如何在 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
有任何想法吗?非常感谢
解决方案
在生成 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>';
}
推荐阅读
- django - 如何将用户评论单独存储到数据库
- ios - 带有 iOS 的 Socket.io 未在移动客户端上连接
- android - Firebase 技术来寻找最近的用户
- java - 链接列表在尝试访问其数据时出现空点错误
- vue.js - 挂载钩子中的错误:“RangeError:超出最大调用堆栈大小”VUEJS
- angular - 如何返回使用可观察对象发出的数据构造的数组?
- c++ - 为什么 VS 2019 中缺少“项目默认值”设置?
- javascript - How to be sure if a callback function has called
- psycopg2 - 将 psycopg2 转换为 asyncpg 格式。““%”处或附近的语法错误”
- objective-c - 在 Swift 中转换 Objective C 块