如何在JavaScript中对两个数组的对应元素值求和
对应数组元素相加的实现方案
嘿,完全不用搞两个循环这么麻烦!其实只需要一次遍历就能轻松搞定这个需求,甚至还有更简洁的数组方法可以直接用,我给你详细讲讲:
基础循环实现(最直观)
因为两个数组的对应元素是同一个索引位置,所以只需要循环一次,用索引同时访问两个数组的元素相加就行。
生成新数组
const arrayOne = [1,2,3,4,5]; const arrayTwo = [2,4,6,8,10]; const newArray = []; for (let i = 0; i < arrayOne.length; i++) { // 按索引取两个数组的元素相加,推入新数组 newArray.push(arrayOne[i] + arrayTwo[i]); } console.log(newArray); // 输出: [3,6,9,12,15]
修改原数组(比如修改arrayOne)
如果不想生成新数组,直接修改其中一个原数组也很简单:
const arrayOne = [1,2,3,4,5]; const arrayTwo = [2,4,6,8,10]; for (let i = 0; i < arrayOne.length; i++) { // 把arrayTwo对应元素的值加到arrayOne上 arrayOne[i] += arrayTwo[i]; } console.log(arrayOne); // 输出: [3,6,9,12,15]
更简洁的数组方法:map
如果你想写得更优雅,可以用数组的map方法,它会遍历数组并返回一个新数组,刚好匹配我们的需求:
const arrayOne = [1,2,3,4,5]; const arrayTwo = [2,4,6,8,10]; // map的第二个参数就是当前元素的索引,直接用它取arrayTwo的对应元素 const newArray = arrayOne.map((num, index) => num + arrayTwo[index]); console.log(newArray); // 输出: [3,6,9,12,15]
处理数组长度不一致的情况
如果两个数组长度不一样,为了避免索引越界报错,我们可以取两者的最小长度来遍历:
const arrayOne = [1,2,3]; const arrayTwo = [2,4,6,8,10]; const minLength = Math.min(arrayOne.length, arrayTwo.length); // 用循环的方式 const newArray = []; for (let i = 0; i < minLength; i++) { newArray.push(arrayOne[i] + arrayTwo[i]); } console.log(newArray); // 输出: [3,6,9] // 或者用map结合slice截取 const newArrayWithMap = arrayOne.slice(0, minLength).map((num, index) => num + arrayTwo[index]); console.log(newArrayWithMap); // 输出: [3,6,9]
总结一下:核心逻辑就是通过同一个索引同时访问两个数组的对应元素,所以只需要一次遍历就够了,完全不需要双循环~
内容的提问来源于stack exchange,提问作者Dan Thory
相关产品推荐
相关产品推荐

