描述
flat方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组元素合并为一个新数组返回
语法
let arr=[1,[2,3],[[3,3,3]]]
arr.flat(1)
arr.flat(Infinity)
console.log(arr.flat(Infinity))
细节
1 .不会改变原数组
2 .也需要用一个新数组来返回他
3 .flat会移除数组里面的空项
疑问
1 .一个不知道深度的数组,如何变成1维数组,Infinity
2 .自己实现语法
function* flatten(arr){
for(const i of arr){
if(Array.isArray(i)){
yield* flatten(i)
}else {
yield i
}
}
}
console.log(arr.flat(Infinity))
console.log([...flatten(arr)])
//这个是最简单的
function flatten2(arr){
for(const i of arr){
if(Array.isArray(i)){
return flatten2(i)
}else {
return i
}
}
}
//这样递归是完全不行的
网友评论