Math.max.apply(推荐)
apply()
- 语法:fun.apply(thisArg, [argsArray])
thisArg:在fun函数运行时指定的 this 值 ,可以为null,就是不设置指向
argsArray:传递的值,必须包含在数组里面
第一个参数为什么可以是null
这块在调用的时候第一个参数给了一个null,这个是因为没有对象去调用这个方法,
我只需要用这个方法帮我运算,得到返回的结果就行,.所以直接传递了一个null过去
Math.max.apply(null,arr)
支持传递数组
const arr = [1, 66, 3, 99, 4];
Math.max.apply(Math, arr)
Math.max+…扩展运算符
Math.max(n1,n2,n3,…,nX)
支持传递多个参数,带有较大的值的那个数
const arr = [1, 66, 3, 99, 4];
Math.max(...arr);
- 最小值同理,Math.min、Math.max.apply
sort
const arr = [1, 66, 3, 99, 4];
arr.sort((a,b)=>b-a)[0]
sort()函数最常见的用法
- 没有函数参数,按字符编码格式排序(升序)
const arr = [1, 66, 3, 99, 4];
arr.sort();
// 1,3,4,66,99
- 传入一个函数参数进行升序或者降序
//最大值
const arr = [1, 66, 3, 99, 4];
arr.sort((a,b)=>b-a)[0]
// 99
//最小值
arr.sort((a,b)=>a-b)[0]
// 1
- sort()里传入的函数的参数a,b是什么?
sort()要排序就要遍历数组,以上面的数组为例子
其中遍历第一步的a=1、b=66
第二步时候a=66、b=3
- 如何排序的呢?
如果 a - b < 0 ,那么 a 会被排列到 b 之前 , 则返回-1.
如果 a - b =0 , a 和 b 的相对位置不变, 则返回 0。
如果 a - b>0 , b 会被排列到 a 之前 , 则返回 1。
function compare(a, b) {
if (a < b ) {
// 按某种排序标准进行比较, a 小于 b
return -1;
}
if (a > b ) {
return 1;
}
// a与b相等
return 0;
}
擂台法
const arr = [1, 66, 3, 99, 4];
let max = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}