🧐 什么是数组扁平化
🤔 为什么要数组扁平化
😎 如何进行数组扁平化
方法一:递归实现
let arr=[1,[2,[3,4,5]]];
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;
}
flatten(arr);
方法二:reduce函数递归
let arr=[1,[2,[3,4,5]]];
function flatten(arr){
return arr.reduce(function(prev,next){
return prev.concat(Array.isArray(next)?flatten(next):next)
},[])
}
flatten(arr);
方法三:拓展运算符实现
let arr=[1,[2,[3,4,5]]];
function flatten(arr){
while(arr.some(itme=>Array.isArray(item))){
arr=[].concat(...arr);
}
return arr;
}
flatten(arr);
方法四:split和toString
let arr=[1,[2,[3,4,5]]];
function flatten(arr){
return arr.toString().split(',');
}
flatten(arr);
方法五:ES6中的flat
let arr=[1,[2,[3,4,5]]];
function flatten(arr){
return arr.flat(Infinity);
}
flatten(arr);
方法六:正则和JSON方法
let arr=[1,[2,[3,4,5]]];
function flatten(arr){
let str=JSON.stringify(arr);
str=str.replace(/(\[|\])/g,'');
str='['+str+']';
return JSON.parse(str);
}
flatten(arr);