javascript几个相应的数组减少/总结

Fra*_*ard 6 javascript

减少这些阵列的最简洁方法是什么?

data = {
    id: [1, 1, 1, 3, 3, 4, 5, 5, 5, ...]
    v: [10,10,10, 5, 10 ...]
}
Run Code Online (Sandbox Code Playgroud)

对于每个id,都有av对应.我想要的是为每个id总结v.在这个例子中,结果应该是

data = {
    id: [1, 3, 4, 5, ...]
    v: [30, 15, ...]
}
Run Code Online (Sandbox Code Playgroud)

vor*_*laz 3

我会选择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;
}, []);
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/2ssbngLr/