数组的扁平化
例子
var arr3 = [1,2,[1,2,[1,2]]] => [1,2,1,2,1,2]
ES6-API
var arr=[1,2,[1,2,[1,2]]]
let arr1 = arr.flat(10)
console.log(arr1)
reduce+递归
var arr=[1,2,[1,2,[1,2]]]
function flatDeep(arr){
return arr.reduce((prev,item)=>{
if(Array.isArray(item)){
return [...prev,...flatDeep(item)]
}else{
return [...prev,item]
}
},[])
}
let arr2 = flatDeep(arr)
console.log(arr2);
reudce+递归(简化版)
var arr = [1, 2, [1, 2, [1, 2, 3]]];
function flatDeep(arr) {
return arr.reduce((prev, item) => {
return prev.concat(Array.isArray(item) ? flatDeep(item) : item);
}, []);
}
let arr2 = flatDeep(arr);
console.log(arr2);
arr.concat([3]) === arr.concat(3)
数组去重
ES6-API
var arr = [1, 2, 1, 2, 1, 2, 3];
let arr1 = new Set(arr);
console.log([...arr1]);
filter+indexOf
var arr = [1, 2, 1, 2, 1, 2, 3];
function deleteRepeat(arr){
return arr.filter((item,index,array)=>
arr.indexOf(item) === index
)
}
let res = deleteRepeat(arr)
console.log(res);