Javascript 按对象值排序对象字典
如果我有这样一个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-
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
来比较YYYY-MM-DD格式的日期localeCompare
- 将已排序的键映射到所需最终结构的对象
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
来比较YYYY-MM-DD格式的日期localeCompare
- 将已排序的键映射到所需最终结构的对象
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对您的真实姓名和内容应用相同的逻辑,演示的技术也会起作用。