【发布时间】:2013-02-12 12:33:54
【问题描述】:
如果我有一个 JavaScript 对象,例如:
var list = {
"you": 100,
"me": 75,
"foo": 116,
"bar": 15
};
有没有办法根据价值对属性进行排序?所以我最终得到了
list = {
"bar": 15,
"me": 75,
"you": 100,
"foo": 116
};
【问题讨论】:
-
不仅是“排序”,更重要的是对数字进行排序。数字不受 Javascripts Array.sort() 方法的影响,这意味着您不仅需要找到对属性进行排序的方法,还必须编写自己的函数来比较数值。
-
在阅读答案之前:答案是否。对象属性的顺序在 ECMAScript 中是非标准的。你永远不应该对 JavaScript 对象中元素的顺序做出假设。对象是属性的无序集合。下面的答案向您展示了如何在数组的帮助下“使用”排序的属性,但从未真正改变对象本身的属性顺序。 所以,不,这是不可能的。 即使您构建具有预排序属性的对象,也不能保证它们将来会以相同的顺序显示。继续阅读:)。
-
@GovindRai 然而,在现实世界的前端应用程序中,我们循环使用 ID 作为键的对象集合,如果转换为 HTML 模板,顺序很重要。你说他们没有顺序,我说他们完全符合我在控制台中看到的顺序。在当前浏览器中记录它们。该订单可以重新排序。一旦你遍历它们,它们就会有一个命令。
-
@GovindRai:现在可以按照规范中的指定顺序访问属性。这是个好主意吗?几乎可以肯定不是。 :-) 但从 ES2015 开始,它就在那里。
-
2019 访问者:检查这个几乎没有被赞成的基于
Object.entries的答案,这是自 ES2017 以来最干净、最易读的最新技术:stackoverflow.com/a/37607084/245966
标签: javascript sorting properties object