【问题标题】:JavaScript forEach loop separating an array into other arrays using .push()JavaScript forEach 循环使用 .push() 将数组分隔为其他数组
【发布时间】:2019-11-26 17:32:33
【问题描述】:

这里是新人,现在一直在尝试解决这个问题。似乎找不到答案。

问题:试图将 5 以上的所有数字分成一个单独的数组“bigNumbers”。所有其他数字到“smallNumbers”

这是我目前所拥有的:

let allNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
let bigNumbers = []; 
let smallNumbers = [];

allNumbers.forEach(function (a) {
  if(allNumbers >= 5) {
    return allNumbers.push(bigNumbers);
  } else {
    return allNumbers.push(smallNumbers);
  }
});

在此处使用 .push() 方法可能完全采用了错误的方法。感谢您提供任何反馈。

【问题讨论】:

  • 阅读代码.... 仔细查看 首先allNumbers >= 5 您正在比较一个大于五的数组。然后你有allNumbers.push(bigNumbers); 你正在将bigNumbers 数组推入allNumbers 数组。您没有将值推送到数组中。了解基本调试 console.log(allNumbers,5, allNumbers>=5),它将向您展示 if 发生的情况。
  • 改用bigNumbers .push(a);smallNumbers.push(a)。并改为检查if (a >= 5)
  • 在您的.forEach() 回调中,您应该指的是a,而不是allNumbers
  • 删除 return 并更改 if 以检查 a
  • return 毫无意义,因为.forEach() 忽略了返回值。

标签: javascript arrays loops foreach


【解决方案1】:

您正在测试错误的变量,它应该是a,而不是allNumbers.push() 的参数是您要推送到数组上的值,而不是要推送到的数组。也不需要使用return,因为forEach 不使用返回值。

let allNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
let bigNumbers = []; 
let smallNumbers = [];

allNumbers.forEach(function (a) {
  if(a >= 5) {
     bigNumbers.push(a);
  } else {
     smallNumbers.push(a);
  }
});

console.log("Big: " + JSON.stringify(bigNumbers));
console.log("Small: " + JSON.stringify(smallNumbers));

【讨论】:

    【解决方案2】:

    麻烦在于您的if (allNumbers >= 5)

    你想知道当前迭代的数字是否大于5:

    if (a >= 5)...
    

    【讨论】:

    • 除了比较之外,还有更多的问题。
    • 对,forEach中不需要return
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2018-04-14
    相关资源
    最近更新 更多