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)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攻城狮狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值