我有一大组看起来与此类似的数据:
var original = [
{ country : 'us', date : '2014-10-29', cost : 45.3 },
{ country : 'africa', date : '2014-10-29', cost : 60.5 },
{ country : 'south_america', date : '2014-10-30', cost : 10 },
{ country : 'us', date : '2014-10-30', cost : 30 }
];
我需要重新排列这些数据,使其看起来更像这样:
var newData = [
{ date : '2014-10-29', us : 45.3, africa : 60.5, south_america : 0 },
{ date : '2014-10-30', us : 30, africa : 0, south_america : 10 }
]
我是处理这样的数据集的新手,我正在努力寻找任何有效的方法来处理这个问题......我唯一能想到的是使用多个 for 循环,而且看起来很糟糕。有没有人有什么想法或建议?
最佳答案
首先想到的是这样做
var original = [
{ country : 'us', date : '2014-10-29', cost : 45.3 },
{ country : 'africa', date : '2014-10-29', cost : 60.5 },
{ country : 'south_america', date : '2014-10-30', cost : 10 },
{ country : 'us', date : '2014-10-30', cost : 30 }
];
var t = {};
var result = [];
original.forEach(function(entry) {
var n = t[entry.date] = t[entry.date] || {};
n.date = entry.date;
n[entry.country] = entry.cost;
});
for(var k in t) {
if (t.hasOwnProperty(k)) {
result.push(t[k]);
}
}
console.log(result);
没有临时对象可能有更好的方法,但你想要高效,我认为这是我能想到的最有效的方法
关于javascript - 在 javascript 中重组复杂对象数组的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31777974/