Javascript 按对象值排序对象字典

Javascript 按对象值排序对象字典,javascript,sorting,object,lodash,Javascript,Sorting,Object,Lodash,如果我有这样一个JavaScript对象: list = { John: { DOB: '2017-02-01' }, Rob: { DOB: '2016-07-09' }, } 如何将此对象排序到按其DOB排序的对象列表中。我已经安装了lodash,所以使用它是一种选择 我希望结果是可映射的,即一个数组,例如: sorted_keys = ['Rob','John'] 或 var列表={ 约翰:{ DOB:‘2017-02-

如果我有这样一个JavaScript对象:

list = {
    John: {
        DOB: '2017-02-01'
    },
    Rob: {
        DOB: '2016-07-09'
    },
}
如何将此对象排序到按其DOB排序的对象列表中。我已经安装了lodash,所以使用它是一种选择

我希望结果是可映射的,即一个数组,例如:

sorted_keys = ['Rob','John']

var列表={
约翰:{
DOB:‘2017-02-01’
},
罗布:{
DOB:‘2016-07-09’
}
}
var sortedKeys=Object.key(list).sort(函数a,b){
返回新日期(列表[a].DOB)-新日期(列表[b].DOB)
})
console.log(sortedKeys)
var列表={
约翰:{
DOB:‘2017-02-01’
},
罗布:{
DOB:‘2016-07-09’
}
}
var sortedKeys=Object.key(list).sort(函数a,b){
返回新日期(列表[a].DOB)-新日期(列表[b].DOB)
})

console.log(sortedKeys)
首先,请注意,有一个名为
list
的对象不是列表,而是对象,这有点奇怪

可以通过以下步骤对该对象中的键值对进行排序:

  • 使用
    Object.keys
  • list[key].DOB
    值的字母顺序对键进行排序。幸运的是,您可以使用
    localeCompare
    来比较YYYY-MM-DD格式的日期
  • 将已排序的键映射到所需最终结构的对象
像这样:

let sorted = Object.keys(list)
  .sort((a, b) => list[a].DOB.localeCompare(list[b].DOB))
  .map(k => { return { [k]: list[k] } }));
结果:

[
  {
    "Rob": {
      "DOB": "2016-07-09"
    }
  },
  {
    "John": {
      "DOB": "2017-02-01"
    }
  }
]

首先,请注意,有一个名为
list
的对象有点奇怪,它不是列表,而是对象

可以通过以下步骤对该对象中的键值对进行排序:

  • 使用
    Object.keys
  • list[key].DOB
    值的字母顺序对键进行排序。幸运的是,您可以使用
    localeCompare
    来比较YYYY-MM-DD格式的日期
  • 将已排序的键映射到所需最终结构的对象
像这样:

let sorted = Object.keys(list)
  .sort((a, b) => list[a].DOB.localeCompare(list[b].DOB))
  .map(k => { return { [k]: list[k] } }));
结果:

[
  {
    "Rob": {
      "DOB": "2016-07-09"
    }
  },
  {
    "John": {
      "DOB": "2017-02-01"
    }
  }
]

你期望的结果是什么?你看到这个帖子了吗?这不是同一件事:那是一个对象数组-这不是。你期望的结果是什么?你看到这篇文章了吗?这不是同一件事:这是一个对象数组-这不是。如果它们不是日期-只是字符串怎么办?@user1637466又添加了一个代码段如果它们不是日期-只是字符串怎么办?@user1637466又添加了一个代码段名称和内容只是为了演示目的-这不是我的实际对象。@user1637466对您的真实姓名和内容,以及演示的技术也会起作用。名称和内容只是为了演示目的-这不是我的实际对象。@user1637466对您的真实姓名和内容应用相同的逻辑,演示的技术也会起作用。