减少这些数组的最干净方法是什么?

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/

10-16 23:11