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

标签 javascript arrays sorting

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

{
    abc: {
        string: 'lorem',
        date: 2
    },
    enc: {
        string: 'ipsum',
        date: 1
    }
}

进入此:

[{
    id: 'enc',
    string: 'ipsum',
    date: 1
},
{
    id: 'abc',
    string: 'lorem',
    date: 2
}]

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

最佳答案

首先需要将原始对象转换成你想要的格式的数组:

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 });
  }

然后,您可以使用数组 sort 方法和自定义比较器来按日期字段排序:

arr.sort(function(obj1, obj2) {
  return obj1.date - obj2.date;
});

关于javascript - 在javascript中对深层对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4299116/

相关文章:

javascript - 格式化单行 JavaScript 文件的方法

arrays - 使用 map 在数组中创建出现的哈希值

javascript - 在javascript中从json数组构建树,没有父键但有前缀

Java根据字符串对自定义对象列表进行排序

python - 根据子列表是否具有指定字符串对包含子列表的列表进行排序

mysql - 按最完整的行排序

javascript - Node.js 使用 AJAX 向后端发送数据

javascript - 使用 alphaMap 不会在我的 Material 中提供透明度

javascript - 如何在AngularJS中的ng-repeat下修改特定数据

python - 按行连接 3D numpy 数组