【发布时间】:2012-12-26 12:52:23
【问题描述】:
我在 PHP 中构建了一个对象,使用 JSON_encode 函数并通过 ajax 将其作为 JSON 字符串发送到我的 JS 脚本。然后我将它转换回一个对象。我遇到的问题是我想保持对象最初创建的顺序。请看这张图片,一旦我将它放入 JS 中,对象的样子:
当我创建对象时,它按客户字段的字母顺序排序。以 A 开头的客户名称将排在第一位,B 排在第二位,依此类推。如您所见,现在,对象的第一个元素为以 S 开头的客户。看起来它以某种方式自动按顶层的键排序对象,它是一个整数,所以我明白为什么会这样。
所以我想做的是重新排序这个对象,以便所有子对象都按字母顺序按customer 字段排序。这可能吗?如果是这样,我该怎么做?
谢谢!
【问题讨论】:
-
您是否遍历了要检查的对象? Chrome 开发工具不会按实际迭代顺序显示对象属性。请记住,对象没有定义的标准跨浏览器迭代顺序,但这些通常遵循添加属性的顺序。
-
不,不可能对对象进行排序。对象总是未排序的。
-
您最好让每一行都成为
array中的object条目;然后,您可以按客户名称对array进行排序。 您不能依赖 JavaScript 中对象的迭代顺序。 -
是的,最好的办法是按照@Mathletics 的建议将对象转换为数组。
-
只是添加到@Mathletics 的建议。拥有数组后(我们称其为
json_array),您可以通过以下方式对其进行排序:json_array.sort(function(a, b){return a.customer > b.customer? 1: -1;});
标签: javascript json sorting jsobject