数组扁平化主要的表现就是把多层嵌套的数组拉平,变成一维数组
下面介绍数组扁平化的四种方式
1.第一种方式就是最简单的flat方法,flat中的参数就是代表深度
let arr=[1,2,[3,[4,[5,6]]]]
// 方式一:flat中的参数代表深度
console.log(arr.flat(3));
// //如果我们不知道数组有多少层
console.log(arr.flat(Infinity));
2.第二种方式是使用reduce,reduce其实也是做累加器的他主要有两个参数,第一个参数是一个函数,函数还有四个参数(最终值,每一项,当前元素索引(选填),当前元素所在数组(选填))第二个参数是初始值(可选填)。
//方法二:reduce
function f(arr){
return arr.reduce((res,item)=>{
return res.concat(Array.isArray(item)?f(item):item)
//判断如果当前项是一个数组,就执行递归,把它分解成不是数组为止,最后拼接到一起
},[])
}
console.log( f(arr));
3.把数组转化成字符串,再将字符串转换成数组
这种方法中运用了数组中的一些基本方法,所以小伙伴们对数组和字符串的方法要用的熟练
//方式三 数组转成字符串,再把字符串转化成数组
function f(arr){
console.log(arr.join().split(',').map((item)=>{
return parseInt(item)
}));
}
f(arr)
4.第四种方法使用了rest运算符,也就是我们经常使用的...
function flat(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
console.log(flat(arr));