Javascript 使用lodash按子值对对象排序

Javascript 使用lodash按子值对对象排序,javascript,object,lodash,javascript-objects,Javascript,Object,Lodash,Javascript Objects,我的目标如下: const object = { "9c8vDTruRDPi937aHMMz":{ name: "item1", createdAt: { seconds: 1582227276, nanoseconds: 68000000 } }, "rAexYu2rAz0AEnD77x5p":{ name: "item2", createdAt: { seconds: 1582227577,

我的目标如下:

const object = {
  "9c8vDTruRDPi937aHMMz":{
    name: "item1",
    createdAt: {
      seconds: 1582227276, 
      nanoseconds: 68000000
    }
  },
  "rAexYu2rAz0AEnD77x5p":{
    name: "item2",
    createdAt: {
      seconds: 1582227577,
      nanoseconds: 922000000
    }
  }
}
并希望根据createdAt.seconds对其进行排序,并将其保留为对象

例如,返回值为(如果排序取决于秒数和描述):

知道如何使用lodash对数组进行排序,但不知道如何使用嵌套对象对这种复杂任务进行排序


任何帮助都非常有用:)

这将把你的对象变成一个可以正确排序的数组(正如@Taki所指出的,对象属性顺序是不能保证的)

const对象={
“9c8vDTruRDPi937aHMMz”:{
名称:“项目1”,
创建数据:{
秒:158227276,
纳秒:68000000
}
},
“rAexYu2rAz0AEnD77x5p”:{
名称:“项目2”,
创建数据:{
秒:158227577,
纳秒:922000000
}
}
};
const orderedArray=389;.chain(对象)
.toPairs()
.map(([key,…obj])=>({
钥匙
…obj[0],
createdAtSeconds:obj[0]。createdAt.seconds
}))
.orderBy(['createdAtSeconds'],['desc'])
.map({createdAtSeconds,…obj})=>obj)
.value()
console.log(orderedaray)

确切地说,您应该使用一个对象数组,
[{key:value},{key:value}]
,在这种情况下,顺序是有保证的,而且我认为您根本无法对对象进行排序。谢谢您的回答!如何转换为数组并根据嵌套对象的值进行排序?
const sortedByDateObject = {
  "rAexQu3rdm0AEnD77x5p":{
    name: "item2",
    createdAt: {
      seconds: 1582227577,
      nanoseconds: 922000000
    }
  },
  "9c8vDGryRSZi817aHMMz":{
    name: "item1",
    createdAt: {
      seconds: 1582227276, 
      nanoseconds: 68000000
    }
  }
}