var myArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
for (var i = 1; i < 21; i++){
if (i%3 === 0 && i%5 === 0){
console.log("FizzBuzz")
}
else if (i%3 === 0){
console.log("Fizz")
}
else if (i%5 === 0){
console.log("Buzz")
}
else {
console.log(i)
}}
您好!
此代码是codecademy的解决方案之一。我想知道FOR循环如何知道访问'myArray'数组以找到'i'的值。我从来没有在FOR循环中提到'myArray',但它知道。我很困惑,因为如果我想让FOR循环访问另一个数组怎么办? FOR循环的逻辑是什么?
非常感谢大家。
答案 0 :(得分:4)
没有。 <{1}}永远不会被使用。
答案 1 :(得分:1)
它不访问数组,只是通过递增i来模拟数组。
如果您要将myArray更改为[2,3,5,6,7,24,50]
(或者不是一个容易计算的序列),那么代码将会失败。
更正确的解决方案是:
var myArray = [/* numbers go here */];
myArray.forEach(function(i) {
if (i%3 === 0 && i%5 === 0) {
console.log("FizzBuzz");
} else if (i%3 === 0) {
console.log("Fizz");
} else if (i%5 === 0) {
console.log("Buzz");
} else {
console.log(i);
}
});
答案 2 :(得分:0)
删除myArray
,您会发现它仍然有效。你正在做的是将i
设置为1
,然后计算到21。这将产生与迭代一系列有序数字相同的结果。
答案 3 :(得分:0)
我想你在这之后:
var myArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
for (var i = 1; i < 21; i++){
if (i%3 === 0 && i%5 === 0){
console.log(myArray[i]+"is FizzBuzz")
}
else if (i%3 === 0){
console.log(myArray[i]+"is Fizz")
}
else if (i%5 === 0){
console.log(myArray[i]+"is Buzz")
}
else {
console.log(i)
}}
答案 4 :(得分:0)
它不会访问myArray
for (var i = 1; i < 21; i++){
if (i%3 === 0 && i%5 === 0){
document.write("FizzBuzz, ");
}
else if (i%3 === 0){
document.write("Fizz, ");
}
else if (i%5 === 0){
document.write("Buzz, ");
}
else {
document.write(i+", ");
}}