在数组javascript中查找最大整数

Geo*_*sta 8 javascript

可能重复:
我如何找到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);
Run Code Online (Sandbox Code Playgroud)

Lar*_*tle 21

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);
Run Code Online (Sandbox Code Playgroud)
  • 您需要定义i或者它成为全局变量.
  • 不要在循环中重新定义最大值.
  • 由于您循环遍历数组,因此请使用i < array.length而不是i <= largest.
  • 由于您要比较数组中的每个项目largest,请使用if(largest < array[i])而不是if(array > largest)
  • 你应该设置最大值等于数组中的第一个元素,因为如果所有数字都是负数呢?
  • array是一个错误的变量名称,因为它太类似于Array(数组构造函数).试试吧arr.

一个班轮:

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

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


Yam*_*088 11

下面的代码是固定的,应该可行.问题是在这一行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);
Run Code Online (Sandbox Code Playgroud)

  • 这不应该是公认的答案,因为有更有效的方法来做到这一点. (3认同)

dmi*_*i3y 11

只需一行:)

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

甚至更好

...
    largest = array.sort((a,b)=>a-b)[array.length - 1];
Run Code Online (Sandbox Code Playgroud)

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

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

虽然在性能方面明智的forEach循环建议在评论中更好 http://jsperf.com/array-sorting-javascript-stack

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

array.sort(function(a, b) {
  return a - b;
});
largest = array[array.length - 1];
Run Code Online (Sandbox Code Playgroud)

  • 比缓慢更糟糕,这是错误的.`sort`首先将元素转换为字符串.排序的输出变为:`[2,3,32,32,5,56,6,89]` - 你很幸运,但是在那里添加了一个`9`,它将被计算为"最大". (3认同)