JS实现数组扁平化的方法

文章介绍了三种在JavaScript中展平多维数组的方法:1)使用展开运算符和while循环;2)利用正则表达式转换字符串再解析回数组;3)使用Array.prototype.flat方法。这些方法提供了不同角度解决数组扁平化问题的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、展开运算符是ES6的新特性之一,用它操作数组可以直接展开数组的第一层,利用这个特性,我们可以不使用递归来实现数组的展平,这次因为每一次递归都是对当前层次数组的一次展开,二扩展操作符就是干这个工作的。

let arr = [1,[2,3,4]]]
function fla(arr){
    while(arr.some(i => Array.isArray(i))){
        arr = [].concat(...arr)
    }
    return arr
}
console.log(fla(arr))

二、正则实现也是先将数组转换成字符串的表达形式,这里将数组转成字符串我们使用JSON.        stringify方法,将数组转换成一个由括号包裹、元素间以逗号相隔的字符串,例如:“[1,[2,[3,[4,5]]],6]”,从转换后的字符可以发现,每一对括号包着的范围就是一个层级,数组的展平就是将内部的层级全部消除,只保留最外层,在这里,就是将括号全部替换成空字符,得到一个元素以逗号相隔字符串,最后将利用JSON.parse方法解析成数组对象。

let arr = [1,[2,[3,[4],5]]],6]
function fla(arr){
    let str = JSON.stringify(arr)
    str = str.replace(/(\[|\])/g,'')
    str = '['+ str + ']'
    // 拼接 
    return JSON.parse(str)
}
console.log(fla(arr))

三、Array.prototype.flat是ES6新增的一个数组方法,它的作用就是用来数组扁平化,并且 根据传入的参数来决定展开的层级,是数组扁平化的终极解决方案。

let arr = [1,[2,[3,4]]]
function fla(arr){
    return arr.flat(Infinity)
}
console.log(fla(arr))

使用普通的递归的思路很容易理解,就是通过for循环的方式,逐层逐个元素地去展平,如果当前元素是一个数组,那么就对它进行递归处理,再将递归处理的结果拼接到结果数组上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值