繁体   English   中英

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

[英]finding the multiples of 2 numbers in an array using .forEach() in 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);

我遇到的问题是我无法让它返回“FizzBu​​zz”的最终字符串,并且还省略了在控制台中显示的计数变量的初始化。

我是 JS 的初学者,所以如果你能在适用的地方提供答案的解释,我将不胜感激。

下面的输出图像:

结果

预期 output

编辑:

我忘了提到这是一个练习,它是作业的一部分,所以我需要使用 forEach 方法,这也使它与其他链接的问题不同,因为那里使用了 for 循环。

您需要先检查“FizBuzz”,然后分别检查“Fizz”和“Buzz”。 在这种情况下,我更喜欢使用.map而不是.forEach在这种情况下,因为.map返回每个元素,因此您不需要创建新的空数组。

 const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] const res = arr.map(el => { if(el % 3 === 0 && el % 5 === 0) return "FizBuzz" else if (el % 3 === 0) return "Fizz" else if (el % 5 === 0) return "Buzz" else return el }) console.log(res)

  • 我使用保护子句使整个 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 arrays 以索引 0 开头...所以count[item] = [item]在 count[0] 处留下一个未定义的位置...您应该让 forEach ZC1C425268E68385D1AB5074C14 使用 index 参数可以传递给它(在您的特定情况下,使用 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" } })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM