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