js数组扁平化常用的6种方法,前端面试必知必会100题(八股文汇总)第25题

第25题:JS数组扁平化比较常用的6种方法

概念:将数组里面的数组打开,最后合并为一个数组。

1.递归实现:遍历数组元素,如果是数组就再递归调用,不是数组就直接push进新数组。
2.reduce实现:(也是递归调用的一种)

function formatArray(arr) {
    return arr.reduce((pre, current) => {
        return pre.concat(Array.isArray(current)?formatArray(current):current)
	}, []) 
}

3.flat方法:这是在ES6里面的新方法

arr.flat(Infinity) 

4.toString实现:

arr.toString().split(',') 

5.扩展运算符:(也是递归调用的一种)

function formatArray2(arr) {
    let arr1 = []
    let isStop = true
    arr.forEach(v => {
        if (Array.isArray(v)) {
            arr1.push(...v)
            isStop = false
        } else {
            arr1.push(v)
        }
	})
    if (isStop) {
        return arr1
	}
    return formatArray2(arr1)
}

6.apply实现:

function formatArrayApply(arr) {
    while (arr.some(item => Array.isArray(item))) {
        console.log(arr)
        arr = [].concat.apply([], arr)
	}
	return arr 
}

当然,能够达到相同目的的方法还有很多,这里只列举了部分常用的方法。欢迎大家在评论区补充~

更多题目:后续不断更新中~可前往个人主页查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值