做过的项目里其实对于数组降维用到的基本没有,所以这次整理的也比较晚,按我的思路总结了一些博客里的常用降维方法,以上。
javascript数组扁平化总结
references:
含义
把包含几个嵌套数组的数组转化成一个一维数组。
数组flat方法
const flatten0=arr=>{
// Infinity可以拉平不管多少维的数组
return arr.flat(Infinity);
};
转换成字符串
join+split
// 缺点就是所有类型都转换为字符串类型,(不要忘了转回数值哦
const flatten1=arr=>{
return arr.join().split(',').map(item=>parseInt(item));
};
toString()+split
const flatten2=arr=>{
return arr.toString().split(',').map(item=>parseInt(item));
};
以上两种方法其实一样的,相对简单容易处理。
递归+数组的其他API
递归+reduce
const flatten3=arr=>{
return arr.reduce((prev,item)=>{
return prev.concat(Array.isArray(item)?flatten3(item):[item]);
},[])
};
递归+forEach
const flatten4=arr=>{
let res=[];
arr.forEach(item=>{
if (Array.isArray(item)){
res=res.concat(flatten4(item));
}else{
res=res.concat([item]);
}
});
return res;
};