[英]Array.sort alphabetically by object key/value
所以我有这个包含对象的数组:
var terms = [
{
'class-1': {name: 'English', completed: '12/02/19', letterGrade: 'A'},
'class-2': {name: 'Math', completed: '12/02/19', letterGrade: 'A'},
'class-3': {name: 'P.E.', completed: '12/02/19', letterGrade: 'A'},
'class-4': {name: 'World History', completed: '12/02/19', letterGrade: 'A'}
},
{
'class-1': {name: 'P.E.', completed: '12/02/19', letterGrade: 'A'},
'class-2': {name: 'World History', completed: '12/02/19', letterGrade: 'A'},
},
{
'class-1': {name: 'P.E.', completed: '12/02/19', letterGrade: 'A'},
'class-2': {name: 'English', completed: '12/02/19', letterGrade: 'A'},
'class-3': {name: 'Math', completed: '12/02/19', letterGrade: 'A'},
},
{
'class-1': {name: 'English', completed: '12/02/19', letterGrade: 'A'},
'class-2': {name: 'Algebra', completed: '12/02/19', letterGrade: 'A'},
'class-3': {name: 'Psychology', completed: '12/02/19', letterGrade: 'A'},
}
]
我想根据 class 的名称按字母顺序对每个嵌套对象进行排序。 但我希望对整个数组进行排序。
不知道我应该如何 go 这样做。 阻碍我的是数据中的嵌套数量。
给定以下输入:
let classes = {
'class-1': {name: 'P.E.', completed: '12/02/19', letterGrade: 'A'},
'class-2': {name: 'English', completed: '12/02/19', letterGrade: 'A'},
'class-3': {name: 'Math', completed: '12/02/19', letterGrade: 'A'},
}
您可以将每个键/值对分成条目,根据需要对这些条目进行排序,然后重新分配给 object,如下所示:
let allEntries = Object.entries(classes)
let sortedEntries = allEntries.sort((a,b) => a[1].name.localeCompare(b[1].name))
let obj = Object.fromEntries(sortedEntries)
这将产生以下结果:
{
'class-2': {name: 'English', completed: '12/02/19', letterGrade: 'A'},
'class-3': {name: 'Math', completed: '12/02/19', letterGrade: 'A'},
'class-1': {name: 'P.E.', completed: '12/02/19', letterGrade: 'A'}
}
虽然请注意插入顺序对于 js object 属性不是确定性的
let classes = { 'class-1': {name: 'PE', completed: '12/02/19', letterGrade: 'A'}, 'class-2': {name: 'English', completed: '12/02/19', letterGrade: 'A'}, 'class-3': {name: 'Math', completed: '12/02/19', letterGrade: 'A'}, } let allEntries = Object.entries(classes) let sortedEntries = allEntries.sort((a,b) => a[1].name.localeCompare(b[1].name)) let obj = Object.fromEntries(sortedEntries) console.log(obj)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.