如何阻止Google Chrome自动排序JSON数据?

7

使用Jquery和Rails 4

<script>
 var jsonData = {
  "81404": "Object",
  "81408": "Object",
  "81416": "Object",
  "80387": "Object",
  "73952": "Object",
  "74697": "Object",
  "81411": "Object",
  "74700": "Object"
 };
console.log(jsonData);
</script>

Mozilla输出(正确并符合预期)
Object { 81404="Object", 81408="Object", 81416="Object", 80387="Object", 73952="Object", 74697="Object", 81411="Object", 74700="Object"}

Chrome 输出 (错误, ???)

Object {73952: "Object", 74697: "Object", 74700: "Object", 80387: "Object", 81404: "Object", 81408: "Object", 81411: "Object", 81416: "Object"}

如何自动解决Chrome中的排序问题,有什么建议可以帮助吗?
我正在使用这些数据进行筛选,其顺序很重要。

1
了解你关心的原因会很有用吧? - musefan
3
JS对象的字段没有顺序,所以两者都是“正确”的。JS对象字段的顺序不受保证。 - Kaarel Nummert
3
你的数据不是一个数组,它们没有固有的顺序,只是对象上的属性。如果顺序很重要,请将它们放在JSON对象的一个数组属性中。 - iCollect.it Ltd
https://dev59.com/jW035IYBdhLWcg3wQtsg - Prinzhorn
1个回答

8

您的数据不是一个数组。它没有固有的顺序。它们只是对象上的属性。

来自this Reference

4.3.3 对象
对象是Object类型的成员。 它是一个无序的属性集合,每个属性都包含原始值、对象或函数。

如果顺序很重要(或者只需使用数组),请将它们放入JSON对象的数组属性中。

例如:类似以下内容:

var jsonData = {data: [
    {"81404": "Object"},
    {"81408": "Object"},
    {"81416": "Object"},
    {"80387": "Object"},
    {"73952": "Object"},
    {"74697": "Object"},
    {"81411": "Object"},
    {"74700": "Object"}]
 };
console.log(jsonData);

或者只是列表。
console.log(jsonData.data);

如果能解释一下你对数据的处理方式,那么任何例子都会更具实际意义。


我该如何将我的jsonData更改为你的jsonData(从旧的(我的)到新的(你的))? - user3676578
1
@user3676578:您需要展示您如何构建JSON。目前,您只提供了一个硬编码的示例,因此返回了一个等效的硬编码示例 :) - iCollect.it Ltd
1
我不是 Ruby on Rails 程序员,但如果你展示完整的问题,并打上 Ruby-on-Rails 的标签,你可能会得到一个完整的解决方案。我只是在回答你提出的问题 :) - iCollect.it Ltd
1
@user3676578,这个明显回答了你的问题,应该标记为答案。在阅读了你的评论后,很明显你所提出的问题没有包含足够的信息来解决你实际的问题。由于你所问的和你的问题之间存在巨大的差距,所以你应该在自己进行研究后,针对任何其他问题开一个新的问题。我相信如果你在问题中涉及到所有部分,你一定会得到解决方案。 - lightswitch05
我也遇到了这个问题...阅读上面选择的答案,它说“它是一个无序属性集合”-那么为什么Chrome和Javascript总是对它进行排序呢?如果Chrome和Javascript总是自动排序,那么一定有一种方法可以阻止它。我的对象是无序的,但Chrome控制台是排序的,AngularJS也是自动排序的-因为我可以在<select>上看到我的ng-repeat。所以问题仍然存在,如何防止自动排序。 - rolinger
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接