假设我有一个包含6个数值数据点的数组,并希望将其更改为3个数据点的数组,其中每个点是2个点的总和
[1,1,1,1,1,1]〜> [2,2,2]
使用像underscore.js这样的库来实现此目的的最佳方法是什么
答案 0 :(得分:1)
如果您想以通用的,功能性的方式进行,那么
function allowIndexes(idx) {
return function(item, index) {
return index % idx;
}
}
function sum() {
return _.reduce(_.toArray(arguments)[0], function(result, current) {
return result + current;
}, 0);
}
var isIndexOdd = allowIndexes(2);
var zipped = _.zip(_.reject(data, isIndexOdd), _.filter(data, isIndexOdd));
console.log(_.map(zipped, sum));
# [ 3, 7, 11 ]
但是,这不会在
的表现附近var result = [];
for (var i = 0; i < data.length; i += 2) {
result.push(data[i] + data[i + 1]);
}
console.log(result);
答案 1 :(得分:0)
我找到了一种方法。我很乐意接受更好的解决方案。
values = [1,1,1,1,1,1];
reportingPeriod = 2;
var combined = [];
_.inject( values, function ( total, value, index) {
if ((index + 1) % reportingPeriod === 0) {
combined.push(total + value);
return 0;
} else {
return total + value
}
}, 0);
答案 2 :(得分:0)
使用lodash,您可以执行以下操作:
let arr = _.fill(Array(6), 1);
let reducer = (sum, num) => sum += num;
arr = _.chain(arr).chunk(2).map(arr => arr.reduce(reducer)).value();