JavaScript數組_二維數組_三維數組(二十五)

目錄:

1.二維數組es6

2.三維數組數組

3.多維數組扁平化處理bash

1、二維數組

第一種方法:經過數組表達式來建立二維數組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();    //在每個數組元素內再定義一個數組
}複製代碼

2、三維數組

三維數組:[[["a","b","c"],[1,2,3]],[["a","b","c"],[1,2,3]]]; //數組的每個元素是一個二維數組。

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))複製代碼

下節預告:數組_數組方法【一】

參考視頻教程:www.3mooc.com/front/couin…

相關文章
相關標籤/搜索