1.二維數組es6
2.三維數組數組
3.多維數組扁平化處理bash
第一種方法:經過數組表達式來建立二維數組markdown
var ArrayObj = [ [ 1,2 ], [ 1,2] ];複製代碼
第二種方法:經過構造函數來建立二維數組app
//第一種方式:傳遞兩個Array構造函數到參數中 var ArrayObj = new Array(new Array(),new Array()); //第二種方式:傳遞兩個Array表達式到參數中 var ArrayObj = new Array([],[]); //第三種方式:經過for循環爲其添加Array構造函數 var ArrayObj = new Array(); //建立數組對象 for (var i = 0; i < length; i++) { ArrayObj[i] = new Array(); //在每個數組元素內再定義一個數組 }複製代碼
三維數組:[[["a","b","c"],[1,2,3]],[["a","b","c"],[1,2,3]]]; //數組的每個元素是一個二維數組。
// 多維數組扁平化 var arr=[1,2,[3,4,[5,6,7]],9,[10,11]] // 1) 方法一 循環數組+遞歸調用 function steamroller (arr){ // 1.建立一個新數組,保存扁平後的數據 var newArr=[]; // 2.for循環原數組 for(var i=0;i<arr.length;i++){ if(Array.isArray(arr[i])){ // 若是是數組,調用steamroller 將其扁平化 // 而後在push 到newArr中 newArr.push.apply(newArr,steamroller(arr[i])) }else { // 反之 不是數組,直接push進newArr newArr.push(arr[i]) } } // 3.返回新的數組 return newArr } console.log(steamroller(arr)) // [ 1, 2, 3, 4, 5, 6, 7, 9, 10, 11 ] // 2) 方法二 利用apply+some // 利用arr.some判斷當數組中還有數組的話,遞歸調用steamroller2扁平函數(利用apply扁平), 用concat鏈接,最終返回arr; function steamroller2(arr){ while(arr.some(item=> Array.isArray(item))){ arr=[].concat.apply([],arr) } return arr } console.log(steamroller2(arr)) // 3) 方法三 reduce方法 // 當數組中還有數組的話,遞歸調用steamroller3扁平函數(利用reduce扁平), 用concat鏈接,最終返回arr.reduce的返回值; function steamroller3(arr){ return arr.reduce((prev,next)=>{ return prev.concat(Array.isArray(next)?steamroller3(next):next) },[]) } console.log(steamroller3(arr)) // 4) 方法四 es6 展開運算符 // 利用arr.some判斷當數組中還有數組的話,遞歸調用flatten扁平函數(利用es6展開運算符扁平), 用concat鏈接,最終返回arr; function steamroller4(arr){ while(arr.some(item=> Array.isArray(item))){ // arr=[].concat.apply([],arr) arr=[].concat(...arr) } return arr } console.log(steamroller4(arr))複製代碼