我需要在解析 json 数据时保留键的顺序。在下图中,原始键按“ProgramName、Curtailment1、2 等”顺序排列,但解析后按字母顺序排列。
我正在尝试下面的解决方法来修复它,但困惑如何用原始键顺序的所有数据填充新数组。
var keys = [];
for (var key in dataset[0]) { //dataset is parsed json
if (dataset[0].hasOwnProperty(key)) {
keys.push(key);
}
}
编辑:如上所示迭代键后,我按原始顺序(在键数组中)获取键,但问题是我不知道在映射键后获取所有记录。
JavaScript 中的
Object
键没有像 Array
那样排序。因此,当您在对象上使用 Object.keys()
或使用 for/in
循环时,不承诺按固定顺序返回键。
要解决此问题,您应该将数据结构转换为
Array
格式。 例如,将 { "CurtailmentDT1": "High Icon", "CurtailmentDT2": "Medium Icon" }
更改为 [ "High Icon", "Medium Icon" ]
或使用 order
键来维护索引,例如
{
"CurtailmentDT1": { "index": 1, "value": "High Icon" },
"CurtailmentDT2": { "index": 2, "value": "Medium Icon" }
}
使用
index
键,您可以对 JSON 中的键/值进行排序。
数据结构,它更像是Map
,但它使键保持有序。Object