首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按对象键/值的字母顺序排列Array.sort

按对象键/值的字母顺序排列Array.sort
EN

Stack Overflow用户
提问于 2020-07-21 04:54:41
回答 1查看 239关注 0票数 2

所以我有一个包含对象的数组:

代码语言:javascript
复制
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'},
 }
]

我想按类名的字母顺序对每个嵌套对象进行排序。但我希望对整个数组进行排序。

我不知道该怎么做。阻碍我的是数据中的嵌套数量。

EN

回答 1

Stack Overflow用户

发布于 2020-07-21 05:18:45

给定以下输入:

代码语言:javascript
复制
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'},
}

您可以将每个键/值对分成多个条目,按您希望的方式对这些条目进行排序,然后重新分配给对象,如下所示:

代码语言:javascript
复制
let allEntries = Object.entries(classes)
let sortedEntries = allEntries.sort((a,b) => a[1].name.localeCompare(b[1].name))
let obj = Object.fromEntries(sortedEntries)

这将产生以下结果:

代码语言:javascript
复制
{
  '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代码片段中的演示

代码语言:javascript
复制
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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63003642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档