【问题标题】:Sum of array elements returns NaN [duplicate]数组元素的总和返回 NaN [重复]
【发布时间】:2014-09-23 20:00:32
【问题描述】:

我有以下代码

var Arr = [-1,3,-4,5,1,-6,2,1];

function solution ( A ) {
  var sum;
  var len = A.length;
  for ( var key in A ) {
    sum += +(parseInt(A[key]));
  }
  return sum;
}

solution( Arr );

它返回NaN。有人可以帮我吗?

谢谢!

【问题讨论】:

  • 除了将 sum 初始化为 0 之外,您还可以删除 parseInt,假设数组元素始终是数字。此外,在访问数组元素时避免使用in,以防Array.prototype 已被扩展。在这种情况下最好使用for 循环。

标签: javascript


【解决方案1】:

你永远不会初始化sum,所以它会从undefined开始。

undefined + 号码 = NaN

【讨论】:

    【解决方案2】:

    undefined + "任何数字" 总是 NaN

    声明sum,起始值为0。 (又名:初始化)

    var sum = 0;
    

    另外,在parseInt 中使用基数是个好主意:

    parseInt(A[key], 10)
    

    这确保parseInt 始终尝试将A[key] 解释为十进制数。

    【讨论】:

      【解决方案3】:

      这是您的代码的工作版本

      function solution ( A ) {
        var sum = 0;
        var len = A.length;
        for ( key in A ) {
          sum += parseInt(A[key], 10);
        }
        return sum;
      }
      

      你应该初始化 sum 并且你的 +(parseInt(A[key]))parseInt(A[key]) 具有相同的效果

      【讨论】:

      • 使用基数 10 进行 parseInt
      • 奇怪的是,我在第一个实例中尝试了它并且它没有工作。所以初始化是个问题。
      猜你喜欢
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 2021-07-19
      • 2017-08-23
      • 2021-08-07
      相关资源
      最近更新 更多