我有一个像这样的列表(它已经在 php 中正确排序)
myList = {
"394":"Andres",
"388":"Franck",
"380":"John",
"415":"Philip"
}
但是,如果我使用 data = JSON.parse(myList)
为下拉列表创建一个对象,作为响应,我会得到按我实际上不想要的键自动排序的列表。
结果:
data = {
"380":"John",
"388":"Franck",
"394":"Andres",
"415":"Philip"
}
那么,将列表作为 JSON 对象进行排序以获取按值排序的列表的最佳方法是什么?
我已经尝试过:
var keyList = Object.keys(data).sort(function(a,b){return data[a]-data[b]});
var valueLIst = Object.values(data).sort(function(a,b){return data[a]-data[b]});
var obj = {};
for(var i=0,len=keyList.length; i < len ;i++) {
obj[keyList[i]] = valueLIst[i];
}
最佳答案
理想情况下,您的 PHP API 应该返回一个数组,因为 JavaScript 对象是 unordered collection of properties根据定义。
4.3.3 Object
An object is a member of the type Object. It is an unordered collection of properties each of which contains a primitive value, object, or function. A function stored in a property of an object is called a method.
但是,如果您想保持 PHP 响应现在的样子,您可以将 API 响应转换为有序的对象数组:
Object.keys(data).map(key => ({ id: key, value: data[key] }))
.sort((a, b) => a.value.localeCompare(b.value));
有趣的是,您还可以使用 Map
根据插入顺序进行排序。
关于jquery - 在 jQuery 中对 JSON.parse 列表进行排序的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45456269/