如何使用javascript地图在每n个元素组合数字?



我喜欢在数组的每4个索引处组合数字。在下面这个过于简化的例子中,我使用了"for"循环。相反,我喜欢学习如何使用"地图"。以达到相同的结果。谢谢你的帮助!

function test() {
var array = [1, 2, 3, 4, 5, 6, 7, 8], arrayNew = [];
for (var n = 0; n < 4; ++n)
arrayNew[n] = array[n] + array[n + 4];
console.log(arrayNew)
}

要使用.map,可以迭代省略前四个元素的数组切片。在迭代期间,循环索引将减少4个单位,因此您可以获取array[i]并将其与切片中当前迭代的值组合在一起:

const array = [1, 2, 3, 4, 5, 6, 7, 8];
const result = array.slice(4).map((val, i) => array[i] + val);
console.log(result);

如果你想添加两个以上的值,但也想添加2n, 3n,…处的值等等,那么你需要一个嵌套的循环。在这里,.map的作用较小。我会"地图"。使用Array.from,它有一个执行映射的回调函数。其次,有动态项数的求和可以用reduce:

function accumulate(array, n) {
const groups = Array.from({length: array.length / n});
return Array.from({length: n}, (val, i) => 
groups.reduce((sum, _, j) => sum + array[i + j*n], 0)
);
}
const array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
console.log(accumulate(array, 4));

最新更新