0

如何从我在数组中输入的数字中找到最大的数字?

我已经尝试过的事情:

var largest = Math.max.apply(Math, number[i]);
var smallest = Math.min.apply(Math, number[i]);
4

6 回答 6

8

你非常接近:

Math.max.apply(Math, number);

您需要将数组的所有元素传递给max()方法;[i]在这里没有意义。

于 2012-09-09T20:42:16.073 回答
3

Math.max.apply 是其他答案中所说的选项,但我认为 reduce 在语言中更常见:

var number=[1,2,3,2,1,1]; 
number.reduce(function(a,b){return a>b ? a : b;});
// returns 3
Math.max.apply(Math.max, number);
// returns 3
于 2012-09-09T20:56:54.210 回答
2
var max = number[0], i = 0;


for (i = 0; i < n; ++i) {
  if (number[i] > max) {
    max = number[i];
  }
}

或者我推荐underscore.js

var max = _.max(number);
于 2012-09-09T20:44:51.270 回答
1

你很接近,试试这个:

Math.max.apply(Math.max, number);

即,第二个参数将数组转换为参数列表。

(实际上,因为Math.max从来不需要this,所以你不需要apply的第一个参数;所以Math.max.apply(null, number)orMath.max.apply('aaaaahhh', number)也可以。)

于 2012-09-09T20:42:03.513 回答
0
function compare(a, b) {

  if (a > b) return 1
  else if (a < b) return -1
  else return 0
}

var arr = [ 1, 2, 15, 12.5, 16, 3.35 ]

arr.sort(compare)

alert( arr[2] ) // your n number


// i used sort() but because by default it sorting in lexicographical order i 
passed it throuth custom comparisom , it works fine for me
于 2014-01-19T03:21:43.760 回答
0

使用 -Array.prototype.reduce()很酷!

[267, 306, 108].reduce((acc,val)=> (acc>val)?acc:val)

其中acc = 累加器val = 当前值

于 2017-04-12T06:25:44.877 回答