1.Array.prototype.flat()
- flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
console.log([1,[1,2],[[12,3],[32,4]]].flat(3));// [ 1, 1, 2, 12, 3, 32, 4 ]
2.递归判断是否是数组
function flat(arr){
let result = [];
for(let i of arr){
if(Array.isArray(i)){
result = result.concat(flat(i));
}else{
result.push(i);
}
}
return result;
}
console.log(flat([1,[1,2],[[12,3],[32,4]]]));// [ 1, 1, 2, 12, 3, 32, 4 ]
3.reduce()
function flat(arr){
return arr.reduce((prev,cur)=>{
return prev.concat(Array.isArray(cur)?flat(cur):cur);
},[]);
}
console.log(flat([1,[1,2],[[12,3],[32,4]]]));// [ 1, 1, 2, 12, 3, 32, 4 ]
4.针对数组元素全部为数字时可以使用toString()
function flat(arr){
return arr.toString().split(',').map((i)=>{
return i = +i;
});
}
console.log(flat([1,[-1,2],[[-12,3],[32,4]]]));// [ 1, -1, 2, -12, 3, 32, 4 ]