【问题标题】:Finding the largest element in an Array查找数组中最大的元素
【发布时间】:2013-08-20 21:38:12
【问题描述】:

我正在尝试编写一个 for 循环来查找 array 中的最大元素并将该元素记录到控制台。到目前为止我得到了这个,但它不起作用。有人可以帮忙吗?

var array = [3, 6, 2, 56, 32, 5, 89, 32];
var largest = 0;

for (var i = 0; 0 < 100; i++ ) {
    if (array[i] > largest) {
       largest = array[i]);
    }
}

console.log(largest);

【问题讨论】:

  • Math.max.apply(0,array) // 89
  • 或 Math.max(0,150,30,20,38);
  • 还有语法错误,把(if里的(去掉,array[i]);里去掉)

标签: javascript loops for-loop element


【解决方案1】:

就像@elclanrs 说的,你想使用内置的Math.max 函数。你可以简单地写:

var array = [3, 6, 2, 56, 32, 5, 89, 32];
var largest = Math.max.apply(null, array);

更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max

【讨论】:

    【解决方案2】:

    嗯,@elclanrs 已经在 cmets 中说过了,但是...

    您可以使用Math.max,它接受不同数量的数字作为参数。但是Math.max 不接受数组作为参数,所以我们使用Function.prototype.apply 将数组中的每个元素作为单独的参数传递。

    Math.max.apply(Math, [3, 6, 2, 56, 32, 5, 89, 32]);

    注意:apply 的第一个参数是执行函数时将设置上下文对象的对象。换句话说,它指定了this 的值。在这种情况下,它可能是null,它不会有任何区别。

    至于你的初始代码,你有一些语法错误,你应该lint你的代码。

    【讨论】:

      【解决方案3】:

      将 for 循环更改为:

      for (var i = 0; i < array.length; i++ ) {
      

      @plalx 是对的,还有一个问题:

      largest = array[i]);
      

      有一个不必要的右括号“)”应该被删除。 应用这两个更改 - 代码将起作用。

      【讨论】:

      • 这不是唯一的问题 =P
      • @plalx 你是对的 - 还有一个问题,请参阅更新的答案。
      猜你喜欢
      • 1970-01-01
      • 2021-06-20
      • 2013-12-15
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      • 2014-07-21
      • 2010-12-12
      相关资源
      最近更新 更多