我正在尝试将数字返回到控制台,在下面的数组中可以被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]);
}
}
答案 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)
您还可以在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;}
的帮助下
<强>样本强>
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;}