首页 > 解决方案 > 通过参数 JS 对嵌套对象进行排序

问题描述

有没有办法通过其中一个参数对嵌套对象进行排序?

例如,如果我有这样的数据结构:

var someObject = {
  'part1328': {
    'time': 1543203609575,
  },
  'part38321': {
    'time': 1543203738716,
  },
  'part1328': {
    'time': 1543203746046,
  },
  'part38338': {
    'time': 1543203752264,
  }

};

而且我不知道我会提前准备多少部分,也不知道它们的名字是什么。有没有办法可以按时间对零件进行排序并获取最新和最旧的零件?

标签: javascriptobject

解决方案


您可以使用Object.entries以列表形式获取一组键/值对。然后,您可以对该列表进行排序并按您喜欢的方式排列数据:

var someObject = {
  'part1328': {
    'time': 1543203609575,
  },
  'part38321': {
    'time': 1543203738716,
  },
  'part1328': {
    'time': 1543203746046,
  },
  'part38338': {
    'time': 1543203752264,
  }

};

let arr = Object.entries(someObject).sort((a, b) => a.time - b.time)
console.log(arr)


// from here you can manage the data any way you want. 
// for example, an array of simple objects:

let merged = arr.map(([key, value]) => ({id: key, ...value}) )
console.log(merged)


推荐阅读