JavaScript如何实现两个等长数组同索引元素分别求和
JavaScript 同长度数组对应索引元素求和的最优实现
最简洁优雅的实现方式是使用Array.prototype.map()方法,借助回调自带的索引参数读取第二个数组的对应位置元素求和,一行代码即可得到目标结果。
最简实现代码
let arr1 = [1, 2, 3]; let arr2 = [8, 9, 2]; const result = arr1.map((currentNum, index) => currentNum + arr2[index]); // 运行后result值为 [9, 11, 5],完全匹配预期结果
实现逻辑说明
map方法遍历第一个数组时,回调函数的第二个入参就是当前遍历元素的索引值- 用该索引直接读取第二个数组同位置的元素,和第一个数组的当前元素相加,返回值会自动作为新数组同索引位的元素
- 题目已明确两个数组长度始终一致,无需额外做长度校验、空值判断,代码可以保持最精简状态
之前写法失效的常见原因
用map、for循环没得到正确结果,基本都是踩了以下问题:
- 写map逻辑时只接收了当前元素参数,没有接收索引参数,无法定位第二个数组的对应位置元素
- 写for循环时索引初始值错误(比如从1开始计数)、循环边界值错误(比如用
<=代替<),或者忘记将求和结果push到新数组中
附正确的for循环实现参考:
const result = []; for (let i = 0; i < arr1.length; i++) { result.push(arr1[i] + arr2[i]); }
拓展提示:如果后续遇到数组长度不一致的场景,只需要在遍历前增加长度对齐逻辑即可,比如取两个数组长度的最大值,缺省位置补0参与计算。
内容的提问来源于stack exchange,提问作者Michaela
相关产品推荐
相关产品推荐

