如何获取JavaScript Map中所有数组第二个元素的总和?
解决Map中数组第二个元素的求和问题
原函数的问题分析
- 函数参数语法错误:
map[k,[v, v1]]不是合法的JavaScript函数参数写法,参数应直接接收传入的Map对象。 - Map无
length属性:你试图通过map.length遍历Map,但Map的元素数量需用map.size获取,且不能用普通索引循环遍历Map。 - 未声明累加变量:函数中直接使用
sum但未提前声明,会引发未定义错误。 - 元素访问逻辑错误:
map[v1]无法正确获取数组的第二个元素,因为你没有正确遍历并解构Map中的键值对。
正确实现方案
方案1:使用Map的forEach方法
function sumArray(map) { let sum = 0; map.forEach((arr) => { sum += arr[1]; }); return sum; } // 调用示例 console.log(sumArray(myMap)); // 输出 18.5
方案2:使用for...of遍历Map的values
function sumArray(map) { let sum = 0; for (const arr of map.values()) { sum += arr[1]; } return sum; }
方案3:使用Array.from结合reduce(简洁写法)
const totalSum = Array.from(myMap.values()).reduce((total, arr) => total + arr[1], 0); console.log(totalSum); // 输出 18.5
内容的提问来源于stack exchange,提问作者aTubOfAdam
相关产品推荐
相关产品推荐

