拿下数组扁平化 走遍天下都不怕
案例 var a = [1, [2, [3, 4, 5]]];
法1 循环递归
function flatten(arr){
let result = []
for(let i=0;i<arr.length;i++){
if(Array.isArray(arr[i])){
result = result.concat(flatten(arr[i]))
}else{
result.push(arr[i])
}
}
return result
}
2.reduce
function flatten(arr){
return arr.reduce((prev,cur) => {return prev.concat(Array.isArray(cur)?flatten(cur):cur)},[])
}
3.扩展运算符和some
function flatten(arr){
while(arr.some(item => {Array.isArray(item)}){
arr = [].concat(...arr)
}
return arr
}
4. toString/split
function flatten(arr){
return arr.toString().split(',')
}
5.ES6 flat
arr.flat(Infinity)
6.正则
function flatten(arr){
let str = JSON.stringify(arr)
str = str.replace('/(\[|\])/g','');
str = '['+str+']';
return JSON.parse(str)
}