数组迭代:将forEach循环重写为for循环



对于一个练习,我必须将forEach循环重写为For循环:

var numbers = [1,2,3,4,5,6,7,8,9,10];
numbers.forEach(function(number){
if(number % 3 === 0) {
console.log(number);
}
});

我想出了以下方法,但它并没有真正起作用,因为它给了我未定义的东西:

var numbers = [1,2,3,4,5,6,7,8,9,10];
for(var i = 0; i < numbers.length; i++) {
if(numbers % 3 === 0) {
console.log(numbers);
} 
};

有人能向我解释一下出了什么问题吗?

您需要numbers:的i-th(当前一个(元素

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

您必须使用数字的第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]);
} 
};

if(numbers[i] % 3 === 0) {
console.log(numbers[i]);
} 

var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
function fun(number) {
if (number % 3 === 0) {
console.log(number);
}
}
// Your code with `forEach` 
numbers.forEach(fun);
// Same with for-loop when convert
for (var i = 0; i < numbers.length; i++) {
fun(numbers[i]);
}
// you are using `numbers % 3`, numbers is an array and you actually you wanted to use with number (which will be `numbers[i]`

最新更新