js陣列降維
阿新 • • 發佈:2018-11-13
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)
這樣我們就完成了多維降為一維了。