[1,2,3,[1,2,3,[1,2]]] => [1, 2, 3, 1, 2, 3, 1, 2]
上面的转换就是数组的扁平化,将一个嵌套多层的数组 array 转换为只有一层的数组。 下面是实现数组扁平化的几种简单方法。
1. 递归
function flatten1(arr){
let result = [];
for(var i =0;i<arr.length;i++){
if(Array.isArray(arr[i])){
result = result.concat(flatten1(arr[i]));
}else{
result.push(arr[i]);
}
}
return result;
}
flatten1([1,2,3,[1,2,3,[1,2]]])//[1, 2, 3, 1, 2, 3, 1, 2]
2. toString
function flatten2(arr){
arr = arr.join(',').split(',');
arr = arr.map(item=>+item); //将被转成字符串的数字转换回去;
return arr;
}
flatten2([1,2,3,[1,2,3,[1,2]]])//[1, 2, 3, 1, 2, 3, 1, 2]
3. reduce()
function flatten3(arr){
return arr.reduce((prev,next)=>{
return pre