所以我有一个包含对象的数组:
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'},
}
]我想按类名的字母顺序对每个嵌套对象进行排序。但我希望对整个数组进行排序。
我不知道该怎么做。阻碍我的是数据中的嵌套数量。
发布于 2020-07-21 05:18:45
给定以下输入:
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'},
}您可以将每个键/值对分成多个条目,按您希望的方式对这些条目进行排序,然后重新分配给对象,如下所示:
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'}
}尽管请注意insertion order is not deterministic for js object properties
Stack代码片段中的演示
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'},
}
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)
https://stackoverflow.com/questions/63003642
复制相似问题