如何使用for循环实现嵌套数组的子数组求和并生成结果数组?
问题分析与解决
先看你代码里的几个核心问题:
- 内层循环遍历的是外层数组
array,而非当前子数组array[i],导致访问array[i][j]时可能取到不存在的元素,直接出现NaN - 求和逻辑完全错误:
array[i][j] + array[i][j]是把同一个元素拼接成字符串(比如1+1变成"11")再转数字,根本不是累加求和 - 没有创建结果数组存储每个子数组的和,最后只输出单个值,完全不符合需求
正确实现代码
var numberList = [[1, 2, 3], [4,5, 6]]; function add(array) { var result = []; // 外层循环遍历每个子数组 for (let i = 0; i < array.length; i++) { var sum = 0; // 内层循环遍历当前子数组的所有元素 for (let j = 0; j < array[i].length; j++) { sum += array[i][j]; } // 将当前子数组的和存入结果数组 result.push(sum); } console.log(result); // 输出 [6, 15] return result; } add(numberList);
代码说明
- 外层
for循环遍历嵌套数组中的每个子数组 - 每个子数组求和前初始化
sum为0,避免和其他子数组的结果混淆 - 内层
for循环逐个累加当前子数组的元素值到sum - 子数组求和完成后,用
push方法将结果存入结果数组 - 最终返回的
result就是所有子数组求和后的目标数组
内容的提问来源于stack exchange,提问作者Alvaro Vasquez
相关产品推荐
相关产品推荐

