JavaScript怎么求数组中最大值和最小值

2017-04-27 13:39 阅读 153 次 JavaScript怎么求数组中最大值和最小值已关闭评论

有时候我们在做项目的时候经常要求一个数组的最大值最小值,但是JS又没有直接现成的方法,那怎么办,只能自己手动实现啦!

本期老九就和大家一起探讨下JS怎么求数组的最大值和最小值(目前老九就知道四种方法,各位还知道其他的可以留言)

 

1、排序法:意思就是先把数组按照从小到大排序,然后第一个就是最小值,最后一个就是最大值了

var array=[100,50,60,40,10,20];

array.sort(function(a,b){

return a-b

})

console.log(array[0],array[arrry.length-1])//10是最小值,100是最大值

这种方法利用了数组中的sort排序方法。

 

2、Math中的min和max方法,我们知道min和max可以求出最大值和最小值,不妨我们来试试

var min=Math.min(array)

var max=Math.max(array)

console.log(min,max)//NaN NaN 什么鬼?为什么不是我们预期的想要的结果呢?

咱们不妨来翻下手册:


min 方法

返回给出的零个或多个数值表达式中较小的值。

Math.min([number1[, number2[. . . [,numberN]]]])

可选项 number1, number2, . . ., numberN 参数为需要进行比较的数值表达式。

说明

如果没有给出参数,返回值等于 POSITIVE_INFINITY。如果有参数为 NaN,返回值也为 NaN。


意思就是min和max方法参数必须是数值,而且要一个个列出来才能求出最小值和最大值。那怎么办不得行啊。

你想想看JS当中有什么方法可以传递进去的是一个数组,但是最后计算的时候是按照一个个数值来的方法?

call方法?call也是要一个个传递,那和call差不多的那个叫什么对了,叫apply,接下来咱们试下apply

var min=Math.min.apply(null,array)

var max=Math.max.apply(null,array)

console.log(min,max)//10 100

 

3、利用eval解析字符串的方式

还是min和max方法

var min=eval("Math.min("+array.toString()+")")
var max=eval("Math.max("+array.toString()+")")

console.log(min,max)//10 100

因为array.toString()结果等于'100,50,60,40,10,20',

是一个字符串,然后咱们进行一个字符串拼接最后用eval让字符串可以执行。

4、假设法,意思就是假设数组中某一个是最大或者最小的,
然后把这个值和其他的值比较,得出最大或者最小的

var min=array[0];//假设是最小的
var max=array[0];//假设是最大的
for(var i=1;i<array.length;i++){//假设一个了,要去比较所以i从1开始
    var index=array[i];
    index>max? max=index:null
    index<min? min=index:null
}
console.log(min,max)//10 100

以上就是数组求最大值最小值老九知道的所有方法了,有错误的地方,希望指正!
版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:JavaScript怎么求数组中最大值和最小值 | Fakin博客

评论已关闭!