在javascript中对深层对象进行排序

Dav*_*ing 0 javascript arrays sorting

对此进行排序的最佳方法是什么:

{
    abc: {
        string: 'lorem',
        date: 2
    },
    enc: {
        string: 'ipsum',
        date: 1
    }
}
Run Code Online (Sandbox Code Playgroud)

进入这个:

[{
    id: 'enc',
    string: 'ipsum',
    date: 1
},
{
    id: 'abc',
    string: 'lorem',
    date: 2
}]
Run Code Online (Sandbox Code Playgroud)

我需要一个按日期(数字)排序的数组和一个平面对象。

cas*_*nca 6

首先,您需要将原始对象转换为您想要的格式的数组:

var arr = [];
for (var key in obj)
  if (obj.hasOwnProperty(key)) {
    var o = obj[key];
    arr.push({ id: key, string: o.string, date: o.date });
  }
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用sort带有自定义比较器的数组方法按日期字段进行排序:

arr.sort(function(obj1, obj2) {
  return obj1.date - obj2.date;
});
Run Code Online (Sandbox Code Playgroud)