JavaScript二維陣列轉換成一維陣列

antzone發表於2017-04-13

本章節分享一段簡單的程式碼例項,它實現了將二維陣列轉換成一維陣列的功能。

當然在javascript中並沒有二維陣列這個概念,只能夠模擬實現。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var arr = [1, [[2, 3], 4], [5, 6]];
var newAarr = [];
var flat = function (a) {
  var length = a.length;
  for (var index = 0; index < length; index++) {
    var item = a[index];
    if (typeof item == "object") {
      flat(item);
    } else {
      newAarr.push(item);
    }
  }
};
flat(arr)
console.log(newAarr);

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).var arr = [1, [[2, 3], 4], [5, 6]],宣告一個多維陣列。

(2).var newAarr = [],宣告一個空的一維陣列。

(3).var flat = function (a) {},宣告一個函式,引數是陣列,用來實現轉換功能。

(4).var length = a.length,獲取陣列的長度。

(5).for (var index = 0; index < length; index++) {},遍歷陣列中的每一個元素。

(6).var item = a[index],獲取對應索引的元素。

(7).if (typeof item == "object") {

  flat(item);

} else {

  newAarr.push(item);

},判斷當前元素是否是一個值型別,如果如果是,則直接追加到新陣列,否則繼續遞迴遍歷。

特別說明:

上面的程式碼是有一點點缺陷的,因為陣列元素也可以是物件直接量等。這裡只是一個演示而已,如果要精確判斷陣列元素是否是一個陣列,可以參閱javascript如何判斷一個物件是不是陣列一章節。

相關閱讀:

(1).typeof可以參閱JavaScript typeof 運算子一章節。

(2)push()可以參閱JavaScript push()一章節。

相關文章