我需要使用 .forEach 方法遍历一个数组,返回所有值,如果任何数字是 3 或 5 的倍数,然后也是 3 和 5,则该数字必须作为字符串返回。到目前为止我的代码:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]; let count = []; arr.forEach((item) => { count[item] = item; if (count[item] % 3 === 0) { count[item] = "Fizz"; } else if (count[item] % 5 === 0) { count[item] = "Buzz"; } else if (count[item] % 3 === 0 || count[item] % 5 === 0) { count[item] = "FizzBuzz";} return count;}); console.log(count);
我遇到的问题是我无法让它返回“FizzBuzz”的最终字符串,并且还忽略了在控制台中显示的计数变量的初始化。
我是 JS 的初学者,所以如果你能在适用的地方提供答案的解释,我将不胜感激。
下面的输出图像:
结果
预期产出
编辑:
我忘了提到这是一个练习,它是作业的一部分,所以我需要使用 forEach 方法,这也使它与其他链接的问题不同,因为那里使用了 for 循环。
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]; arr.forEach(function(element, index) { if (element % 5 === 0 && element % 3 === 0) return arr[index] = "Fizz-Buzz" if (element % 5 === 0) return arr[index] = "Buzz" if (element % 3 === 0) return arr[index] = "Fizz" }) console.log(arr)
还要注意,javascript数组从索引0开始......所以count[item] = [item]在count [0]处留下一个未定义的点......你应该让你的forEach函数使用可以传递给它的索引参数(在您使用 count[item] = [item] 的特殊情况不会产生那么多问题)但最好从一开始就以正确的方式进行
count[item] = [item]
这里没有保护条款的代码:
arr.forEach(function (element, index) { if (element % 5 === 0 && element % 3 === 0) { arr[index] = "Fizz-Buzz" } else if (element % 5 === 0) { arr[index] = "Buzz" } else if (element % 3 === 0) { arr[index] = "Fizz" } })
运行代码片段