1.扁平化n维数组
1.终极篇
Array.flat(n)是ES10扁平数组的API,n表示维度,n值为Infinity时维度为无限大。
[1,[2,3]].flat(2) //[1,2,3]
[1,[2,3,[4,5]].flat(3) //[1,2,3,4,5]
[1,[2,3,[4,5,[...]]]].flat(Infinity) //[1,2,3,4,5...n]
2.开始篇
实质是利用递归和数组合并方法以及扩展运算符实现扁平
function flattern(arr){
while(arr.some(item=>Array.isArray(item))){
arr=[].concat(...arr);
}
return arr;
}
flattern([1,[2,3]]) //[1,2,3]
flattern([1,[2,3,[4,5]]]) //[1,2,3,4,5]
2.去重
1.终极篇
set是ES6新出来的一种定义不重复数组的数据类型
Array.from是将类数组转化为数组
...是扩展运算符,将set里面的值转化为字符串
Array.from(new Set([1,2,3,3,4,4]))
[...new Set([1,2,3,3,4,4])]
3.排序
1.终极篇
[1,2,3].sort();//[1,2,3]默认是升序
[1,2,3,4].sort((a,b)=>b-a);
4.最大值
1.终极篇
Math.max()是Math对象内置的方法,参数是字符串。
reduce是ES5的数组API,参数有函数和初始默认值。
函数有4个参数:
pre:上一次的返回值
cur:当前值
curIndex:当前值索引
arr:当前数组
Math.max(...[1,2,3,4]) //4
Math.max.apply(this,[1,2,3,4])//4
[1,2,3,4].reduce((prev,cur,curIndex,arr)=>{
return Math.max(prev,cur)
},0) //4
5.求和
1.终极篇
[1,2,3,4].reduce(function(pre,cur){
return pre+cur;
},0) //10
6.合并
[1,2,3,4].concat([5,6]) //[1,2,3,4,5,6]
[...[1,2,3,4],...[5,6]] //[1,2,3,4,5,6]
[1,2,3,4].push.apply([1,2,3,4],[5,6]) //[1,2,3,4,5,6]