js多維陣列降成一維陣列
阿新 • • 發佈:2021-11-30
第一種方法:使用join方法加split方法
//第一種方法:使用join方法將陣列降維成一維字串,然後使用split方法轉為陣列 let arr = [1, [2, 3, [7, 8, 9]], [4, 5, [10, 11, 12, [13, 14, 15]], 6] ]; let arrjoin = arr.join().split(','); console.log(arrjoin) //['1', '2', '3', '7', '8', '9', '4', '5', '10', '11', '12', '13', '14', '15', '6']
第二種方法:使用遞迴
let arr2 = [1, [2, 3, [7, 8, 9]], [4, 5, [10, 11, 12, [13, 14, 15]], 6] ]; //建立一個新陣列用於儲存降維後的新陣列 let newArr = []; // 建立一個toArr函式 let toArr = (arr2) => { // 遍歷引數arr for (let i = 0; i < arr2.length; i++) { // 判斷這個引數是不是陣列,是陣列重新呼叫toArr函式,進行遞迴,非陣列引數直接新增到新陣列中 if (arr2[i] instanceof Array) { toArr(arr2[i]); } else { newArr.push(arr2[i]); } } } toArr(arr2); console.log(newArr);//['1', '2', '3', '7', '8', '9', '4', '5', '10', '11', '12', '13', '14', '15', '6']
第三種方法:使用陣列的flat方法
// Array.flat() 接收數字引數, 預設是1, 也就是降一個數組, 取值為Infinity表示直接降維成一維陣列 let arr3 = [ 1, [2, 3, [7, 8, 9]], [4, 5, [10, 11, 12, [13, 14, 15]], 6] ]; let arr4 = [1, 2, [3, 4, [5]]]; console.log(arr4.flat()); //[1, 2, 3, 4,[5]] console.log(arr3.flat(Infinity)) //[1, 2, 3, 7, 8, 9, 4, 5, 10, 11, 12, 13, 14, 15, 6] //使用flat方法清除陣列中的空元素 let arr5 = [1, 2, 3, , 5]; console.log(arr5.flat()); //[1, 2, 3, 5]