我有一个像这样的列表(它已经在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];
}
答案 0 :(得分:2)
理想情况下,您的PHP API应该返回一个数组,因为JavaScript对象的定义是unordered collection of properties。
4.3.3对象
一个对象是一个成员 类型对象。 这是一个无序的属性集合 包含原始值,对象或 功能。存储在a中的函数 对象的属性称为a 方法
但是,如果要保持PHP响应的现状,可以将API响应转换为有序的对象数组:
Object.keys(data).map(key => ({ id: key, value: data[key] }))
.sort((a, b) => a.value.localeCompare(b.value));
有趣的是,您也可以根据广告订单使用Map
订单。