1

我创建了一个包含点内容的对象以及您将获得的标记

marks: {
                900: 1.0,
                822: 1.1,
                804: 1.2,
                786: 1.3,
                768: 1.4,
                750: 1.5,
                732: 1.6,
                714: 1.7,
                696: 1.8,
                678: 1.9,
                660: 2.0,
                588: 2.4,
                570: 2.5,
                552: 2.6,
                534: 2.7,
                516: 2.8,
                498: 2.9,
                480: 3.0,
                462: 3.1,
                444: 3.2,
                426: 3.3,
                408: 3.4,
                390: 3.5,
                372: 3.6,
                354: 3.7,
                336: 3.8,
                318: 3.9,
                300: 4.0
            },

如果我在控制台中显示对象,输出将是

对象 { 300=4, 318=3.9, 336=3.8, 更多...}

你可以在http://jsfiddle.net/Sx4Z2/上看到它

出了什么问题,为什么对象中有顺序?

4

3 回答 3

4

如果顺序对您很重要,则应使用数组。您不能信任 JavaScript 对象中的属性顺序。在你的情况下,我会使用类似的东西:

[
    {key: 900, value: 1.0},
    {key: 822, value: 1.1},
    // ...
]

看看这个问题:Does JavaScript Guarantee Object Property Order?

于 2013-10-28T18:22:11.543 回答
2

ECMA-262 没有指定对象中键的顺序。但是请注意以下几点:

  1. 无论如何,几乎每个 JavaScript 引擎都会保留键顺序。
  2. ...除非这些键是整数,在这种情况下它们通常不会。

因此,在您的情况下,如果您在键前加上一些非字母字符串,您应该能够提供可预测的行为(尽管不基于任何标准)。

于 2013-10-28T18:23:48.773 回答
2

它本身不是reorder- JavaScript 对象没有指定的顺序。如果您需要订购,请使用数组。

于 2013-10-28T18:24:05.880 回答