如何对包含'-'元素的二维数组按列求和?
解决二维数组含'-'的按列求和问题
你的代码问题出在直接对原始元素进行累加,遇到'-'字符串时会触发字符串拼接,而非数值相加,哪怕单独用Number(num)如果没在正确位置处理也没用。下面是修正后的方案:
核心思路
- 遍历每个元素时,先将
'-'转换为0(默认按无值处理,若业务有其他规则可调整),其他元素转为数值类型 - 确保累加的始终是数值,避免字符串干扰
修正后的代码
const arr = [ ['-', 2, 21], [1, '-', 4, 54], [5, 2, 2], [11, 5, 3, 1] ]; const sumArray = (array) => { const newArray = []; array.forEach(sub => { sub.forEach((item, index) => { // 统一处理元素:'-'转0,非有效数字也设为0 const num = item === '-' ? 0 : Number(item) || 0; // 累加时确保初始值为0,避免存入字符串 newArray[index] = (newArray[index] || 0) + num; }); }); return newArray; } console.log(sumArray(arr)); // 输出: [17, 9, 30, 55]
关键细节解释
item === '-' ? 0 : Number(item) || 0:既处理了指定的'-',也兼容了其他可能的非数值元素,避免出现NaNnewArray[index] = (newArray[index] || 0) + num:保证每一列的初始累加值是0,而不是直接赋值原始元素,从根源上避免字符串混入累加逻辑
内容的提问来源于stack exchange,提问作者onit
相关产品推荐
相关产品推荐

