18

可能重复:
如何找到 JavaScript 数组中包含的最大数字?

我无法让此代码正常工作。我已经有一段时间试图弄清楚了。当我查看控制台时,它只显示 0。我做错了什么?

这是我的代码:

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

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

console.log(largest);
4

6 回答 6

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

for (var i = 0; i < arr.length; i++) {
    if (largest < arr[i] ) {
        largest = arr[i];
    }
}
console.log(largest);
  • 您需要定义i,否则它会成为全局变量。
  • 不要在循环中重新定义最大。
  • 由于您正在遍历数组,因此请使用i < array.length而不是i <= largest.
  • 由于您将数组中的每个项目与 进行比较largest,请使用if(largest < array[i])而不是if(array > largest)
  • 您应该将最大的设置为等于数组中的第一个元素,因为如果所有数字都是负数怎么办?
  • arrayArray是一个错误的变量名,因为它与(数组构造函数)太相似了。试试arr吧。

一个班轮:

var largest = Math.max.apply(0, array);

更多信息:3 个数字的 Javascript max() 函数

于 2012-12-10T02:38:56.150 回答
20

下面的代码是固定的,应该可以工作。问题是在这一行中if (array>largest) {你没有提供数组的索引。通过将代码更改为此if (array[i]>largest) {它可以工作。请注意,我在 if 语句[i]的末尾添加了 。array

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

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




console.log(largest);
于 2012-12-10T02:36:45.433 回答
16

只有一行:)

var array = [3 , 6, 2, 56, 32, 5, 89, 32],
    largest = array.sort((a,b)=>a-b).reverse()[0];

甚至更好

...
    largest = array.sort((a,b)=>a-b)[array.length - 1];

UPD,当您在数组中添加例如 9 时,上面的所有代码都很糟糕,因为默认情况下,数字在排序中被视为字符串,有更好的版本

var array = [3 , 6, 2, 56, 32, 5, 89, 32, 9], largest;
array.sort(function(a, b) {
   largest = a > b ? a: b;
});

尽管在评论中建议的性能forEach循环更好 http://jsperf.com/array-sorting-javascript-stack

UPD2,好的,上面的代码有一些不好的部分,所以不能按预期工作。另一个尝试:

array.sort(function(a, b) {
  return a - b;
});
largest = array[array.length - 1];
于 2012-12-10T02:55:08.860 回答
4

你有几个小错误。第一的:

if (array>largest) {

它应该是:

if ( array[i]>largest) {

第二:

for ( i = 0; i <= largest; i++) {

应该

for (i = 0; i <= array.length; i++) {
于 2012-12-10T02:37:05.263 回答
3
var array = [3 , 6, 2, 56, 32, 5, 89, 32];
var largest= array[0];

for (i=0; i<=largest;i++){
    if (array[i]>largest) {
        largest=array[i];
    }
}
于 2012-12-10T02:39:13.487 回答
2

您的代码中有两个问题。首先,array>largest应该是array[i]>largest。其次,您在if其中声明了一个新的最大变量,该变量与外部变量不同。var从新最大值的赋值中删除。

于 2012-12-10T02:38:38.333 回答