在jQuery中对JSON.parse列表进行排序的最简单方法

时间:2017-08-02 09:04:02

标签: jquery sorting

我有一个像这样的列表(它已经在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];
   }

1 个答案:

答案 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订单。