减少这些数组的最干净方法是什么?
data = {
id: [1, 1, 1, 3, 3, 4, 5, 5, 5, ...]
v: [10,10,10, 5, 10 ...]
}
对于每个id,都有一个v对应。我想要的是为每个ID求和v。在此示例中,结果应为
data = {
id: [1, 3, 4, 5, ...]
v: [30, 15, ...]
}
最佳答案
我会去Array.prototype.reduce(),简单而优雅的解决方案
var ids = [1, 1, 1, 3, 3, 3, 3, 4, 5, 6, 6, 6],
v = [10, 10, 10, 5, 10, 10, 10, 404, 505, 600, 60, 6],
data = {};
data.v = [];
data.ids = ids.reduce(function(a, b, index) {
if (a.indexOf(b) < 0) a.push(b);
if (!data.v[a.indexOf(b)]) data.v[a.indexOf(b)] = 0;
data.v[a.indexOf(b)] += v[index];
return a;
}, []);
https://jsfiddle.net/2ssbngLr/
关于javascript - javascript几个对应的数组减少/求和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34494920/