如何对嵌套数组中对应位置的元素求和生成新数组?
嵌套数组对应位置元素求和的实现
给定嵌套数组:
const array1 = [[5, 10, 15], [1, 2, 3]];
需要转换为对应位置元素求和后的数组:
const sum = [6, 12, 18];
以下是几种实用的实现方式:
方法一:针对两个子数组的简单实现
利用map方法遍历第一个子数组的元素,通过索引匹配第二个子数组的对应元素并求和:
const array1 = [[5, 10, 15], [1, 2, 3]]; const sum = array1[0].map((num, index) => num + array1[1][index]); console.log(sum); // 输出: [6, 12, 18]
方法二:支持任意数量子数组的通用实现
如果嵌套数组包含多个子数组(且长度一致),可以用reduce方法累加对应位置的元素:
const array1 = [[5, 10, 15], [1, 2, 3]]; const sum = array1.reduce((acc, curr) => { return curr.map((num, index) => acc[index] + num); }); console.log(sum); // 输出: [6, 12, 18]
方法三:处理子数组长度不一致的情况
如果子数组长度不同,可以先取最短子数组的长度,再进行求和,避免索引越界:
const array1 = [[5, 10, 15, 20], [1, 2, 3]]; const minLength = Math.min(...array1.map(arr => arr.length)); const sum = array1.reduce((acc, curr) => { return curr.slice(0, minLength).map((num, index) => acc[index] + num); }); console.log(sum); // 输出: [6, 12, 18]
内容的提问来源于stack exchange,提问作者Timo Kivelä
相关产品推荐
相关产品推荐

