首页 > 解决方案 > 使用For循环返回数组中可被3整除的数字?

问题描述

我正在尝试使用如下所示的 for 循环将在下面的数组中可被 3 整除的数字返回到控制台。

它将数字 2-9 返回到控制台,但不是可被 3 整除的数字?我难过?我究竟做错了什么?

var numbers = [1,2,3,4,5,6,7,8,9,10]

for(var i = 0; i < numbers.length; i++) {
    if(i % 3){
       console.log(numbers[i]);
    }
}

标签: javascriptarraysloops

解决方案


语句根据if条件语句的结果进行分支。if(i % 3){将在true任何时候返回模运算的结果不是0因为任何非零数转换为true.

语句应该是: 因为如果除以 3 并且余数是​​ ,if(i % 3 === 0){您只想分支到该部分。true0

接下来,您将使用循环索引作为要操作的数字,但您需要将数组项与循环计数器的索引一起使用numbers[i],而不是i.

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){
       console.log(numbers[i]);
    }
}

此外,这里更简单的方法可能是使用Array.filter(),它遍历数组并返回具有您指定的值的新数组:

var numbers = [1,2,3,4,5,6,7,8,9,10];

var results = numbers.filter(function(num){
  return num % 3 === 0;
});

console.log(results);


推荐阅读