JavaScript函数问题:生成小于max的7的倍数数组返回0如何修复?
修复返回小于max的7的倍数数组的函数
你的代码核心错误是数组的push是方法,必须用括号调用,你写成了sevenarr.push[i],这是完全错误的语法:
- 方括号
[]是访问对象/数组属性的语法,这里push是数组的内置方法(本质是函数对象),push[i]只是尝试读取这个函数对象的i属性,根本不会执行添加元素到数组的操作。 - 你看到结果里有
0,是因为循环初始i=0时,0%7===0的条件成立,但错误的代码并没有修改数组——实际原代码运行后应该返回空数组,可能你测试时的情况有偏差,但核心问题肯定是push的调用方式错误。
把sevenarr.push[i]改成sevenarr.push(i)就能正常工作,修复后的完整代码:
function returnSevens(max) { let sevenarr = []; for (let i = 0; i < max; i++) { if (i % 7 === 0) { sevenarr.push(i); } } return sevenarr; } console.log(returnSevens(14)) // 输出 [0, 7]
如果不需要包含0,还可以优化循环,直接从7开始每次加7,省去取余判断:
function returnSevens(max) { let sevenarr = []; for (let i = 7; i < max; i += 7) { sevenarr.push(i); } return sevenarr; } console.log(returnSevens(14)) // 输出 [7]
内容的提问来源于stack exchange,提问作者UBO
相关产品推荐
相关产品推荐

