JavaScript基础:统计数组负值的函数代码错误排查
代码错误排查与修正
你的代码一共有3处会直接导致运行失败/结果错误的问题,逐点说明:
- 比较运算符书写错误:JavaScript 中小于等于的合法运算符是
<=(小于号在前,等号在后),你写反成=<属于非法语法,会直接触发代码解析错误;另外就算运算符写对,循环终止条件用x <= a.length也会出现数组越界——数组下标从0开始计数,最大有效下标是a.length - 1,正确的终止条件应该是x < a.length。 - 返回语句位置错误:你把
return n写在了for循环的代码块内部,第一次循环执行完就会直接终止函数返回结果,根本不会遍历完数组里的所有元素。return语句需要挪到for循环的外层,等全部元素遍历、计数完成后再返回结果。 - 存在冗余无效代码:
else {n = n}的逻辑是把变量n的值赋值给它本身,没有任何实际作用,可以直接删除。
修正后的原逻辑代码
保留你原本的循环计数思路,修正错误后的可运行代码如下:
function myFunction(a) { let n = 0; for (let x = 0; x < a.length; x++) { if (a[x] < 0) { n++; } } return n; }
可以直接用测试用例验证:比如传入数组[1, -2, 3, -5, 0],函数会正确返回负值的数量2。
可选的简洁写法
如果不需要严格遵循for循环的写法,也可以用数组内置方法更简洁地实现需求:
const countNegative = (a) => a.filter(num => num < 0).length;
内容的提问来源于stack exchange,提问作者Rodrisil
相关产品推荐
相关产品推荐

