可能重复:
How might I find the largest number contained in a JavaScript array?
我无法让这段代码工作我已经有一段时间试图解决这个问题了。当我看到控制台时它只显示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);
答案 0 :(得分: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);
i
,否则它将成为全局变量。i < array.length
代替i <= largest
。largest
进行比较,请使用if(largest < array[i])
代替if(array > largest)
array
是一个错误的变量名,因为它与Array
(数组构造函数)太相似了。请改为arr
。一个班轮:
var largest = Math.max.apply(0, array);
答案 1 :(得分:10)
只需一行:)
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];
答案 2 :(得分:9)
下面的代码是固定的,应该可行。问题是在这一行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);
答案 3 :(得分:3)
你有一些小错误。第一:
if (array>largest) {
应该是:
if ( array[i]>largest) {
第二
for ( i = 0; i <= largest; i++) {
应该是
for (i = 0; i <= array.length; i++) {
答案 4 :(得分:2)
var array = [3 , 6, 2, 56, 32, 5, 89, 32];
var largest= array[0];
for (i=0; i<=largest;i++){
if (array[i]>largest) {
var largest=array[i];
}
}
答案 5 :(得分:1)
您的代码中有两个问题。首先,array>largest
应为array[i]>largest
。其次,您在if
内声明了一个新的最大变量,它与外部变量不同。从新的最大值的分配中删除var
。