返回的数字使用For循环在数组中可被3整除?

时间:2018-05-08 17:37:51

标签: javascript arrays loops

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

它将数字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]);
    }
}

5 个答案:

答案 0 :(得分:10)

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

该声明应为:if(i % 3 === 0){,因为如果除以3而其余部分为true,您只想分支到0部分。

接下来,您使用循环索引作为要操作的数字,但是您需要将数组项与循环计数器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);

答案 1 :(得分:1)

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

numbers.forEach(n => {
  if (n % 3 === 0) console.log(n);
});

答案 2 :(得分:0)

问题在于您的if声明。请参阅示例。

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]);
    }
}

答案 3 :(得分:0)

你做错的一件事是你使用 i 而不是数字[i],其次你没有将它与 0 进行比较。它应该是这样的:

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]);}}

答案 4 :(得分:0)

ES6

您还可以在reduce()的帮助下使用一元否定操作员(感叹号)来实现

<强>样本

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

console.log(numbers.reduce((r,v)=>!(v%3)?r.concat(v):r,[]))
.as-console-wrapper {max-height: 100% !important;top: 0;}

filter()

的帮助下

<强>样本

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

console.log(numbers.filter(v=>!(v%3)))
.as-console-wrapper {max-height: 100% !important;top: 0;}