Array.reduce()求和始终返回0,无法正常工作的问题求助
问题:Array.reduce()求和始终返回0,数组明明有值?
我尝试用Array.reduce()对数组中的数值求和,但方法一直无法正常工作,返回结果始终是0。我通过console.log打印数组,确认数组里确实存在数值,却不知道为什么没法完成求和操作。
我的代码如下:
const cubitMeters = (parseInt(height) * parseInt(width) * parseInt(length) * parseInt(count)) / 1000000 totalW.push(cubitMeters) const totalW = [] const sum = totalW.reduce((a, b) => a + b, 0) console.log('sum: ' + sum) console.log(totalW)
问题原因
核心问题是变量声明顺序错误:你先尝试往totalW数组里push数值,但紧接着又用const totalW = []重新声明了一个全新的空数组。后面调用reduce求和的是这个刚创建的空数组,结果自然是0。
修正代码
把数组的声明放在push操作之前,确保所有操作针对的是同一个数组:
// 先声明空数组 const totalW = [] const cubitMeters = (parseInt(height, 10) * parseInt(width, 10) * parseInt(length, 10) * parseInt(count, 10)) / 1000000 // 往同一个数组添加元素 totalW.push(cubitMeters) // 对有值的数组求和 const sum = totalW.reduce((a, b) => a + b, 0) console.log('sum: ' + sum) console.log(totalW)
额外提示:使用parseInt时建议加上第二个参数(基数,比如10),避免因字符串前缀问题导致的意外解析错误;如果涉及小数计算,也可以考虑用parseFloat()或Number()来转换数值。
内容的提问来源于stack exchange,提问作者Mateusz Szumilo
相关产品推荐
相关产品推荐

