一尘不染

在javascript中使用.forEach()在数组中查找2个数字的倍数

javascript

我需要使用 .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 循环。


阅读 92

收藏
2022-07-26

共1个答案

一尘不染

  • 我使用保护子句使整个 if 语句的内容更干净一些
  • 您可以将 Array.forEach() 与索引一起用作参数,这在这里很有帮助
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] 的特殊情况不会产生那么多问题)但最好从一开始就以正确的方式进行

这里没有保护条款的代码:

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"
  }
})

运行代码片段

2022-07-26