1.sort排序
sort是es6新增的方法 排序会直接改变的是原数组
const arr = [1,51,25,41,5]
arr.sort((a, b) => {
// b-a从大到小 a-b从小到大
return b - a
})
sort函数也可以排序对象数组
const arrobj = [
{
id: 1,
name: 'haha'
},
{
id: 20,
name: 'sasa'
},
{
id: 15,
name: 'fafa'
}
]
arrobj.sort((a, b) => {
return a - b
})
arrobj // [{id: 1, name: 'haha'}, {id: 15, name: 'fafa'}, {id: 20, name: 'sasa'}]
// 比较字符串
arrobj.sort(function(a, b){
var x = a.name.toLowerCase();
var y = b.name.toLowerCase();
if (x < y) {return -1;}
if (x > y) {return 1;}
return 0;
});
2.假设法取大小值
假设当前数组中的第一个值是最大值,然后拿这个最大值和后面的项逐一比较,如果后面的某一个值比假设的值还大,说明假设错了,我们把假设的值进行替换。最后得到的结果就是我们想要的。
// 获取最大值:
let arr = [22,13,6,55,30];
let max = arr[0];
for(let i = 1; i < arr.length; i++) {
let cur = arr[i];
cur > max ? max = cur : null
}
console.log(max); // 55
// 获取最小值:
let arr = [22,13,6,55,30];
let min = arr[0];
for(let i = 1; i < arr.length; i++) {
let cur = arr[i];
cur < min ? min = cur : null
}
console.log(min) // 6
3.使用 Math 中的 max/min 方法取大小值
可以使用apply来实现。apply传入的是一个数组。
var arr = [22,13,6,55,30];
var max = Math.max.apply(null, arr);
var min = Math.min.apply(null, arr);
console.log(max, min) // 55,6
4.使用ES6的扩展运算符
//ES5 取数组最大值
console.log(Math.max.apply(this, [654, 233, 727]));
//ES6 扩展运算符
console.log(Math.max(...[654, 233, 727]))
//相当于
console.log(Math.max(654, 233, 727))