我知道javascript对象没有它包含的键/值对的固有顺序,但我遇到了一个有趣的问题,希望有人可以指出我的解决方案。
我正在开发一个角度应用程序,它需要遍历一组对象并在UI中显示给定键的值。这是表格数据。很基本的。问题来自后端数据源。数据来自多个源,并非所有对象都获得所有键/值。我们无法控制后端。此外,存在可变数量的键/值对。所以,我在前端看到的可能看起来像这样:
[{ A: a, B: b, C: c}, {B: b, C: c}]
我可以迭代返回的数组并添加缺失的键,但事情可能不正常,即:
[{ A: a, B: b, C:c}, {B: b, C: c, A: a}]
当然会导致数据显示不正确。
for(var val of dataArray){
for(var header of headers){
val.environmentMetrics[header] = val.environmentMetrics[header] || 0;
}
}
headers是一个与键匹配的字符串数组。返回数据中的第一个对象包含用于表头的键。
那么最好的方法是一致地获取数据顺序吗? 感谢
答案 0 :(得分:3)
我可能会按照您希望它们的顺序使用Object.keys
和sort
结果,然后循环遍历该数组以进行输出。
我从你的问题中不清楚你是在谈论dataArray
还是headers
,所以只是在摘要中:
var obj = {
c: "see",
a: "ay",
b: "bee",
d: "dee"
};
console.log("Object order:");
var key, keys = [];
for (key in obj) {
keys.push(key);
}
console.log(keys.map(function(key) { return key + ": " + obj[key];}).join(", "));
console.log("Sorted order:");
keys = Object.keys(obj).sort()
console.log(keys.map(function(key) { return key + ": " + obj[key];}).join(", "));