1. 程式人生 > >js陣列降維

js陣列降維

js陣列從一維降到二維

首先大家需要了解一下這兩個方法

arr作為apply方法的第二個引數,本身是一個數組,陣列中的每一個元素(還是陣列,即二維陣列的第二維)會被作為引數依次傳入到concat中,效果等同於[ ].concat([1,2], [3,4], [5,6])。
利用apply方法,我們將單重迴圈優化為了一行程式碼

var myArr = [1,2,3,[4,5,6]]
var reduce = function(arr){
       return Array.prototype.concat.apply([], arr)
}
console.log(reduce(myArr))//[1,2,3,4,5,6]

js陣列從多維降到一維

這裡就會用到遞迴,遞迴的要點有兩個一個是遞迴條件,二是結束條件,此時有一陣列arr

var arr = [1, 2, [4, 5, 6, ['a', 'b', 'c', ['aa', 'bb', 'cc', [777, 555, 999]]]]]

迴圈遍歷此陣列,當陣列的元素為陣列時,則進行遞迴,如果不為陣列則將陣列元素push到一個新陣列.

    var arr = [1, 2, [4, 5, 6, ['a', 'b', 'c', ['aa', 'bb', 'cc', [777, 555, 999]]]]]
    var newArr = []
    var reduceArr = function (arr) {
        for (var i = 0; i < arr.length; i++) {
            if (Array.isArray(arr[i])) {
                reduceArr(arr[i])
            } else {
                newArr.push(arr[i])
            }
        }
    }
    reduceArr(arr)
    console.log(newArr)

這樣我們就完成了多維降為一維了。