使用Reduce方法计算数字各位之和时触发空数组Reduce报错问题
错误根因
- 你使用的
new Array(n)语法不符合需求:该语法会创建长度等于参数n的空位数组,例如入参为123时会生成包含123个空位的空数组,并非将数字的每一位拆分作为数组元素 - 调用
reduce方法时如果没有传入初始累计值,要求数组至少存在一个元素(会取第一个元素作为初始值),空数组调用该方法就会抛出你遇到的报错
正确实现方案
计算数位和的核心逻辑是先拆分数字的每一位,再用reduce累加,实现代码如下:
function solution(n) { // 数字转字符串→拆分为单字符数组→每一位转数字→reduce累加,初始值设为0 return String(n) .split('') .map(Number) .reduce((accumulator, current) => accumulator + current, 0); }
逻辑验证
- 入参为123时,依次处理得到
"123"→["1","2","3"]→[1,2,3],累加后输出6 - 入参为987时,依次处理得到
"987"→["9","8","7"]→[9,8,7],累加后输出24
内容的提问来源于stack exchange,提问作者EIK
相关产品推荐
相关产品推荐

