我正在使用jQuery为下拉菜单动态创建选项列表,如下所示:
let user_data = {}
const writeData = (uid, data_name, data) => {
((user_data[uid] || (user_data[uid] = {})) && (user_data[uid][data_name] = data ))
console.log(user_data)
// perform write action
}
writeData('1',"test","test1");
writeData('2',"test","test2");
writeData('1',"test","test3");
我要执行的操作是按字符串aString排序选项列表,首先按aNumber排序,然后按anotherNumber排序。
例如,我希望它看起来像 猫1-1 猫2-1 猫2-3 狗1-1
我当前正在使用:
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分组在一起,特别是如果它具有2个或更多的数字(例如10)
有什么想法吗?非常感谢
答案 0 :(得分:1)
在生成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>';
}
答案 1 :(得分:1)
添加到 Peter Van Drunen 的内容中,请尝试对数组进行排序:
response.sort(function (a, b) {
return (
a.aNumber.localeCompare(b.aNumber)
|| a.aString - b.aString
|| a.anotherNumber - b.anotherNumber
);
});
根据示例进行更新:
{{1}}