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)

这样我们就完成了多维降为一维了。

猜你喜欢

转载自blog.csdn.net/wodebokecsdn/article/details/83861743
今日推荐