使用for循环筛选数组中3的倍数出错,求问题排查
问题分析与修复方案
嘿,我一眼就发现你代码里的两个小问题啦,这就是为啥输出不符合预期的原因:
错误1:判断对象搞反了
你现在的条件if(i % 3)是在检查数组的索引i能不能被3整除,但我们的目标是检查**数组里的元素numbers[i]**呀!索引和元素的值完全不是一回事,比如i=2的时候,索引2不能被3整除,但对应的元素是3,明明是符合要求的,却因为索引的判断被错误输出了;而i=3的时候,索引3能被3整除,但元素是4,不该输出,却被跳过了。
错误2:条件逻辑写反了
在JavaScript里,0会被当作布尔值false,非0数值会被当作true。你写的if(i % 3)其实等价于if(i % 3 !== 0),也就是当索引除以3有余数的时候才执行输出——这和你想要的“能被3整除”正好相反!
修正后的代码
var numbers = [1,2,3,4,5,6,7,8,9,10] for(var i = 0; i < numbers.length; i++) { if(numbers[i] % 3 === 0){ // 检查数组元素是否能被3整除,余数为0时符合条件 console.log(numbers[i]); } }
运行这段代码,控制台就会正确输出3、6、9啦!
内容的提问来源于stack exchange,提问作者CaliCap
相关产品推荐
相关产品推荐

