我这里有一个函数,可以分别用“Fizz”和“Buzz”替换 3 和 5 的倍数的元素。我运行了该函数,它仅用“Fizz”替换第一个元素,没有其他任何内容。我不确定为什么它只替换第一个元素,因为它与我拥有的任何 if else 语句都不匹配。我不认为我需要在函数中包含数组,因为这意味着在我尝试替换元素时正在创建数组。
var listOfNumbers = new Array(100);
var i, j;
for (i = 0; i < listOfNumbers.length; i++){
listOfNumbers[i] = i + 1;
}
function fizzBuzz(listOfNumbers){
for (j = 0; j < listOfNumbers.length; j++) {
if (j % 3 == 0 && j % 5 == 0){
listOfNumbers[j] = "FizzBuzz";
}
else if (j % 3 == 0) {
listOfNumbers[j] = "Fizz";
}
else if (j % 5 == 0) {
listOfNumbers[j] = "Buzz";
}
else {
listOfNumbers[j] = j;
}
return listOfNumbers;
}
document.getElementById("Nums").innerHTML = fizzBuzz();
}
我不确定
另外,我有一个显示数组的按钮,但单击它时似乎没有显示数组。
<h4>Fizz Buzz</h4>
<p>An idea that prints the elements of an array from 1 to 100, but it prints "Fizz" for every multiple of 3, "Buzz" for ever multiple of 5, and finally "FizzBuzz" for every multple of 15.
Idea taken from <a href="https://github.com/karan/Projects#text">here</a>.</p>
<button type="button" onclick="fizzBuzz()">Click to see the results</button>
<p id="Nums"></p>
最佳答案
你需要
移交数组,
检查数组的值,而不是索引,因为它移动了一位,
首先检查FizzBuzz,获取可被
<3
和5
整除的数字,返回末尾的数组,
另外声明一个局部变量
j
。
function getFizzBuzz() {
var listOfNumbers = new Array(100),
i;
for (i = 0; i < listOfNumbers.length; i++) {
listOfNumbers[i] = i + 1;
}
document.getElementById("Nums").innerHTML = fizzBuzz(listOfNumbers);
}
function fizzBuzz(array) {
var j;
for (j = 0; j < array.length; j++) {
if (array[j] % 3 == 0 && array[j] % 5 == 0) {
array[j] = "FizzBuzz";
} else if (array[j] % 3 == 0) {
array[j] = "Fizz";
} else if (array[j] % 5 == 0) {
array[j] = "Buzz";
}
}
return array;
}
<button onclick="getFizzBuzz()">FizzBuzz!!!</button><br><div id="Nums"></div>
关于javascript - 使用 for 循环替换数组中的元素 javascript 未正确替换元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49223014/