如何在JavaScript中比较多维数组值并找出最大子数组总和
求多维数组中最大子数组总和
你已经实现了单个子数组的求和逻辑,现在只需要遍历多维数组的每个子数组,计算每个子数组的和,再从中找出最大值即可。
实现步骤:
- 遍历多维数组的每一个子数组
- 对每个子数组使用你已有的
reduce方法计算总和 - 维护一个变量记录当前的最大总和,遍历过程中不断更新这个值
完整代码示例:
// 目标多维数组 const multiArr = [[1, 2], [3, 10], [3, 3]]; // 初始化最大总和为第一个子数组的和(也可以设为负无穷,兼容子数组和为负数的情况) let maxSum = multiArr[0].reduce((acc, val) => acc + val, 0); // 遍历所有子数组 for (const subArr of multiArr) { const currentSum = subArr.reduce((acc, val) => acc + val, 0); // 比较并更新最大总和 if (currentSum > maxSum) { maxSum = currentSum; } } console.log(maxSum); // 输出 13
更简洁的写法(使用map和Math.max):
const multiArr = [[1, 2], [3, 10], [3, 3]]; // 先把每个子数组的和映射成一个新数组,再取最大值 const maxSum = Math.max(...multiArr.map(subArr => subArr.reduce((acc, val) => acc + val, 0) )); console.log(maxSum); // 输出 13
注意:如果多维数组中可能存在空的子数组,需要额外处理(比如空数组和为0,或者根据需求忽略),上述代码默认空数组和为0。
内容的提问来源于stack exchange,提问作者Vongai Olivia Machingura
相关产品推荐
相关产品推荐

