减少这些阵列的最简洁方法是什么?
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)
我会选择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/
归档时间: |
|
查看次数: |
92 次 |
最近记录: |