微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在javascript中使用.forEach在数组中查找2个数字的倍数

  • 我使用保护子句使整个 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"
  }
})

运行代码片段

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。