1 function flattening(arr) { 2 let arr1 = (arr + "").split(","); 3 //此时获得的每一项的字符数组 4 //接着转数字 5 let arr2 = arr1.map(item => { 6 return item * 1; 7 }) 8 return arr2; 9 }
1 function flattening(arr, newArr = []) { 2 for (let i = 0; i < arr.length; i++) { 3 if (Array.isArray(arr[i])) { 4 flattening(arr[i], newArr) 5 } else { 6 newArr.push(arr[i]) 7 } 8 } 9 return newArr 10 }
1 function flattening(arr) { 2 var res = []; 3 arr.map(item => { 4 if (Array.isArray(item)) { 5 res = res.concat(flattening(item)); 6 } else { 7 res.push(item); 8 } 9 }); 10 return res; 11 }
1 function flattening(arr) { 2 while (arr.some(item => Array.isArray(item))) { 3 arr = [].concat(...arr) 4 } 5 return arr; 6 }
1 function flattening(arr) { 2 let newArr=arr.reduce((prev,cur)=>{ 3 return [].concat(prev,cur) 4 }) 5 6 let flag=newArr.some(item=>Array.isArray(item)) 7 if(flag){ 8 return flattening(newArr); 9 }else{ 10 return newArr 11 } 12 }
其实说了这么多方法 es6有一个封装好的方法能够进行数组扁平化处理 node
Array.flat();es6
flat 方法默认没有参数 这时只会降维降一层 数组
能够传数字指定降维次数 传个无穷就是所有展开 性能
flat放法不会改变原数组 而且不支持node运行spa