【问题标题】:JSON is sorted after adding element dynamicallyJSON在动态添加元素后排序
【发布时间】:2015-05-11 10:47:37
【问题描述】:

我使用以下代码在JSON中添加元素

jobs[job.id] = jobObject

job id 以 110,81,195,126,112 的顺序返回

但是当我检查最终的JSONalert(JSON.stringify(jobs)) 时,它给了我这样的输出

{"81":{"439":"none"},"110":{"386":0,"407":";^1^1^1^1^1"},"112":{},"126":{"440":"none"},"195":{"14":"20","400":"0"}}

按id排序

为什么它返回排序,我怎样才能得到具有相同订单 ID 的最终 JSON 被返回

【问题讨论】:

  • JSON 是不可预测的,并且大多按字母/数字排序。这不是为了保持秩序,而是为了保留property-values 对。您正在寻找的是一个数组。
  • 否决票?有人忘了说原因可能是它可以帮助我改善我的问题:-/
  • 只是为了和你分享一个关于如何探索你的对象的好技巧:不要使用alert()!点击 F12 打开的 console。在您的代码中使用:console.dir( jobs );。你去 - 玩得开心。

标签: javascript json object


【解决方案1】:

JavaScript 对象没有顺序。将物品插入对象或取出物品时,无法保证顺序。

如果您想要一个有序列表,请使用对象数组。

[{"81": {"439": "none"},
 {"110": ....,
 ...
]

【讨论】:

  • 我想要{"110":{"386":0,"407":";^1^1^1^1^1"},"81":{"439":"none"},"195":{"14":"20","400":"0"},"126":{"440":"none"},"112":{}}
  • 我意识到这一点。你不能。 JavaScript 对象没有定义的顺序。
  • 它与返回作业ID的顺序相同
  • 所以在得到最终的JSON 后应该有一种方法可以根据我的要求重新排序它们?
  • JavaScript 对象没有顺序,您不能订购任何明确指定为没有顺序的东西。如果您想要订购,请使用数组。否则,处理对象没有任何顺序的事实。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 1970-01-01
  • 2012-06-03
  • 2021-06-12
  • 2014-09-10
相关资源
最近更新 更多