【问题标题】:Creating a javascript function with for loops that returns the number (amount) of even numbers not the actual even numbers使用 for 循环创建一个 javascript 函数,该函数返回偶数的数量(数量)而不是实际的偶数
【发布时间】:2019-10-22 19:50:48
【问题描述】:

编写一个函数定义,接收数字序列并返回偶数个数

我尝试创建一个 for 循环来计算所有偶数

function countEvens(x){
  var allEven = [];
  for(var i = 0; i < x.length; i++){
    if(x[i] % 2 === 0){
      allEven += x.length;
    }
  }
  return allEven;
}

我希望只得到偶数的数量,所以如果它是 1、2、3、4、5,它应该返回 2。

【问题讨论】:

  • 错误在这个语句中:allEven += x.length。请解释你认为它在做什么,以及如果你要返回一个数字,为​​什么 allEven 被声明为一个数组。
  • @mustaccio 你看不到正在测试的部分,但“答案”有一个数字数组,它只会检查该数组的偶数。所以我必须编写一个函数来检查它。老实说,我不确定我为什么要放“ allEven += x.length。我开始考虑将其排除在外。

标签: javascript arrays function loops


【解决方案1】:

当你定义allEven时:

var allEven = [];

...你将它初始化为一个Array。这意味着这条线,当它第一次运行时:

allEven += x.length;

...等同于:

allEven = [] + 5

JavaScript 有足够的“帮助”来处理这个问题。它决定将[] 转换为字符串"",然后将5 转换为字符串,得到"5" 作为结果。

您需要重新考虑这种方法。此函数的工作是计数,就像人工计数一样,这意味着您要从 0 开始:

var allEven = 0

...然后当您遇到偶数时,将您的运行计数加一:

allEven += 1

这应该会给你你的计数。

【讨论】:

    【解决方案2】:

    如果您正在寻找计数,请尝试使用计数器并在循环中增加它。

    function countEvens(x){
      var count = 0;
      for(var i = 0; i < x.length; i++){
        if(x[i] % 2 === 0){
          count++;
        }
      }
      return count;
    }
    

    【讨论】:

    • 是的,我没有想到要为我的变量添加 0 并且还使用 count++
    猜你喜欢
    • 2021-10-18
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 2020-03-14
    相关资源
    最近更新 更多