JS数组扁平化实现的四种方法

目录

1. 常规递归法

2. reduce 方法

3. 扩展运算符实现

4. split 和 toString 共同处理 


数组的扁平化就是将一个嵌套多层的数组 array(嵌套可以是任何层数)转换为只有一层的数组。

var arr = [1, [2, [3, 4, 5]]];
console.log(flatten(arr)); // [1, 2, 3, 4,5]

本文就是要用多种方法实现这个 flatten 函数 

1. 常规递归法

var a = [1, [2, [3, 4, 5]]];

function flatten(arr) {
    let newArray = []
    for (let i of arr) {
        if (i.constructor === Array) {
            newArray = newArray.concat(flatten(i))
        } else {
            newArray.push(i)
        }
    }
    return newArray
}
console.log(flatten(a)); // [1, 2, 3, 4,5]

这段代码核心就是循环遍历过程中的递归操作,就是在遍历过程中发现数组元素还是数组的时候进行递归操作,把数组的结果通过数组的 concat 方法拼接到最后要返回的 result 数组上,那么最后输出的结果就是扁平化后的数组。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Frank.30

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

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

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

打赏作者

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

抵扣说明:

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

余额充值