【发布时间】:2019-07-11 20:22:46
【问题描述】:
我知道对象默认按升序或我们将插入的方式排序,但我需要按降序对对象进行排序的最佳方式。例如:
Input x = {
a: {},
b: {},
c: {},
d: {}
}
Output: x = {
d: {},
c: {},
b: {},
a: {}
}
我尝试了以下解决方案,它有效,但这是一个好习惯还是我可以在这方面做得更好?
x= Object.keys(x).sort().reverse().reduce((obj, key) => {
obj[key] = x[key]
return obj
}, {})
【问题讨论】:
-
对象属性没有保证的顺序,就像数组元素一样。
-
也许先对它们进行排序:
Object.keys(x).sort((a, b) => b.localeCompare(a)).reduce() -
您无法可靠地对没有保证顺序的东西进行排序。如果需要对数组进行排序,请使用数组!
-
@James — 从 ECMAScript 2017 开始,请参阅抽象操作 OrdinaryOwnPropertyKeys,它在访问属性名称时被各种方法使用。但是,并非所有使用中的实现都符合要求。
-
@James 这不再是真的。 Javascript 对象 do 有保证的顺序,假设您的键名不是正整数值。我绝不会建议将对象用于任何依赖于顺序的事物,但是“对象属性没有保证顺序”的概念是错误的信息。
标签: javascript sorting object