1. 获取数组最大值
- 方法1
Math.max(...arr);
- 方法2
Math.max.apply(null,arr);
- 方法3
let max = arr[0];
for (let i = 0; i < arr.length - 1; i++) {
max = max < arr[i+1] ? arr[i+1] : max ;
}
- 方法4
arr.sort((a, b) => {
return a -b ;
})
console.log(arr[arr.length-1]);
- 方法5
let max= arr.reduce((a, b) => {
return a > b ? a : b
})
console.log(max);
- 方法6
let arr = [2,8,5,4,1,6];
let max = arr[0];
arr.forEach(function(item){
if( item > max ){
max = item;
}
})
console.log(max);
注: reduce方法的高阶函数适用范围广,一般情况下可以传入2个参数:
第一个参数:回调函数;
第二个参数:初始值,可以是空对象,空数组,变量等,依具体情况而定。
而回调函数中有四个参数:
第一个参数:变化的值;
第二个参数: 当前操作的值;
第三个参数:当前操作的值的索引;
第四个参数:当前操作的数组。
其中reduce参数值中的第二个参数(初始值)可以省略;回调函数中的第三个参数和第四个参数 也可以省略。
改写上述方法5的完整版
let array = [20, 30, 33, 5, 19]
let result = array.reduce(function (prev, cur, index, array) {
console.log(prev, cur, index, array);
// return prev>cur? prev:cur;
// return Math.max(prev,cur);
// return Math.max(...array);
return Math.max.apply(null, array);
console.log(prev, cur);
})
console.log(result);
2.去掉数组中的0值
let array1 = [6,11,0,22,0,18,0,21,0];
let newArr = [];
array1.forEach(function(item,index){
if(item != 0){
// newArr.push(item);
newArr[newArr.length] = item;
}
})
console.log(newArr);
3.数组排序
//从小到大排序
let arr = [10,8,2,15,3,56,61]
let res = arr.sort(function(a,b){
return a-b;
})
console.log(res);
//从大到小排序
let arr1 = [10,8,2,15,3,56,61]
let res1 = arr.sort(function(a,b){
return b-a;
})
console.log(res1);
4.数组去重
indexOf() :返回第一次出现的指定子字符串在此字符串中的索引。
- 方法1
let arr3 = ['apple', 'orange','apple','juice','watermelon'];
let arrRes = arr3.filter(function(item,index,self){
return self.indexOf(item) === index;
})
console.log(arrRes);
- 方法2
let array4 = ['apple', 'orange','apple','juice','watermelon'];
let arr4Res = array4.reduce(function (prev, cur, index, array) {
//console.log(prev, cur);
//没找到返回-1
prev.indexOf(cur) === -1 && prev.push(cur);
return prev;
},[])
5.去掉空字符串
let arr4 = [23,50 , null ,undefined, '', 50];
let newArr4 = arr4.filter(function(item,index,self){
return item;
})
console.log(newArr4);//[23,50,50]
6.数组求和
let array3= [6, 8, 5, 3];
let arr3= array3.reduce(function (prev, cur) {
// console.log(prev, cur);
return prev = prev + cur;
})
console.log(arr3);//22
7.二维数组扁平化
let array4 = [[1, 2], [3, 4], [5, 6]];
let arr4Res = array4.reduce(function (prev, cur, index, array) {
//console.log(prev, cur);
return prev.concat(cur);
})
console.log(arr4Res);
8.数组元素重复个数
let str = 'aaaabbbbcdd';
let array5 = str.split("");
//console.log(array5);
let arr5Res = array5.reduce(function (prev, cur, index, array) {
//console.log(prev, cur);
prev[cur] = prev[cur]+1||1;
return prev;
},{})
console.log(arr5Res);//{a: 4, b: 4, c: 1, d: 2}
对于其他常用方法,查阅资料即可