微信公众号:不清不楚的迷茫
关注可了解更多的教程及排版技巧。问题或建议,请公众号留言;
如果你觉得教程对你有帮助,欢迎赞赏[1]
如何求数组的最值
1//问题:如何求数组的最值
2
3var array = [54,65,43,21,12,34,45,58,97,24];
4
5//1,字符串拼接法(利用toString和join把数组转换为字符串,再用Math的max和mix方法进行拼接,最后执行eval方法)
6console.log(array.toString());//54,65,43,21,12,34,45,58,97,24
7console.log(eval("Math.max("+array.toString()+")"));//<==>eval("Math.max(54,65,43,21,12,34,45,58,97,24)")
8console.log(eval("Math.min(54,65,43,21,12,34,45,58,97,24)"));//<==>eval("Math.min("+array.toString()+")")
9console.log(Math.min(54,65,43,21,12,34,45,58,97,24))
10console.log(eval("Math.max("+array.join()+")"));//本质都是将字符串转换为可执行的代码,join():用于把数组中的所有元素放入一个字符串
11
12//2,排序法
13array.sort(
14 function(a,b){
15 return a-b;
16 }
17);
18console.log("最小值Min:"+array[0]);
19console.log("最大值Max:"+array[array.length-1]);
20
21//3,Math的max和min方法(查:appli()和call())
22console.log(Math.max.apply(null,array))
23console.log(Math.max.apply("这里随便写",array))
24
25//4,假设法(假设数组第一个值为最大,和后边比较,若后边的值比最大值大,则替换最大值)
26var max = array[0];
27var min = array[0];
28for (var i = 1; i < array.length; i++) {
29 var current = array[i];
30 current>max?max=current:null;
31 current<min?min=current:null;
32 }
33console.log("最大值Max:"+max);
34
35//5,使用ES6的扩展运算符
36//console.log(array.Math(..array));//此方法不行