【发布时间】:2017-02-23 16:14:12
【问题描述】:
使用 JSON 数据,javascript 改变对象的顺序:
{
"01": { "disabled": 0, "factor": 10, "id": "01", "tickets": 0 },
"02": { "disabled": 0, "factor": 10, "id": "02", "tickets": 0 },
"03": { "disabled": 0, "factor": 10, "id": "03", "tickets": 0 },
"04": { "disabled": 0, "factor": 10, "id": "04", "tickets": 0 },
"05": { "disabled": 0, "factor": 10, "id": "05", "tickets": 0 },
"06": { "disabled": 0, "factor": 10, "id": "06", "tickets": 0 },
"07": { "disabled": 0, "factor": 10, "id": "07", "tickets": 0 },
"08": { "disabled": 0, "factor": 10, "id": "08", "tickets": 0 },
"09": { "disabled": 0, "factor": 10, "id": "09", "tickets": 0 },
"10": { "disabled": 0, "factor": 10, "id": "10", "tickets": 0 },
"11": { "disabled": 1, "factor": 40, "id": "11", "tickets": 0 }
}
到这里:
{
"10": { "disabled": 0, "factor": 10, "id": "10", "tickets": 0 },
"11": { "disabled": 1, "factor": 40, "id": "11", "tickets": 0 },
"01": { "disabled": 0, "factor": 10, "id": "01", "tickets": 0 },
"02": { "disabled": 0, "factor": 10, "id": "02", "tickets": 0 },
"03": { "disabled": 0, "factor": 10, "id": "03", "tickets": 0 },
"04": { "disabled": 0, "factor": 10, "id": "04", "tickets": 0 },
"05": { "disabled": 0, "factor": 10, "id": "05", "tickets": 0 },
"06": { "disabled": 0, "factor": 10, "id": "06", "tickets": 0 },
"07": { "disabled": 0, "factor": 10, "id": "07", "tickets": 0 },
"08": { "disabled": 0, "factor": 10, "id": "08", "tickets": 0 },
"09": { "disabled": 0, "factor": 10, "id": "09", "tickets": 0 }
}
请注意,即使在原始 JSON 中,开头的“10”和“11”行也在末尾。
我用这个来修复它:
var data = JSON.parse(json_data);
var keys = Object.keys(data).sort();
for ( var k in keys )
{
var key = keys[k];
var row = data[key];
console.log(row);
};
如何防止javascript改变行的顺序?
那个错误(因为它是)让我很生气。 :-/
感谢您的帮助。
【问题讨论】:
-
不保证 JavaScript 对象中属性的顺序。
-
我知道它正在寻找答案。 :-(
-
细说一下,如果需要保证顺序,使用数组。 JSON 不适合人类消费,因此期望 JavaScript 将其格式化以供人类消费不会有好结果。如果您确实需要格式化 JSON 以供人类阅读,请考虑使用像
jq这样的外部实用程序。支持按键排序。 -
如果“索引”很重要,请使用数组,或者为它重用 id 属性。如果您将其用作字典以直接通过 id 引用记录,我更喜欢使用数组作为源,然后在运行时创建字典哈希表。
-
您需要如何处理这些使订单变得重要的数据?
标签: javascript arrays json sorting