<script>
// 1,递归实现
普通的递归思路很容易理解,就是通过循环递归的⽅式,⼀项⼀项地去遍历,如果每⼀项还是⼀个数
组,那么就继续往下遍历,利⽤递归程序的⽅法,来实现数组的每⼀项的连接
let arr = [1,[2,3[4,5]]]
function flatten1(arr){
let res = []
for(let i = 0;i<arr.length;i++){
if(Array.isArray(arr[i])){
res = res.concat(flatten(arr[i]))
}else{
res.push(arr[i])
}
}
return res
}
// 2,reduce函数迭代
function flatten2(arr){
return arr.reduce((prev,next)=>{
return prev.concat(Array.isArray(next) ? flatten2(next) : next)
},[])
}
// 3,扩展运算符和some一起使用
function flatten3(arr){
while(arr.some(item=>Array.isArray(item))){
arr = [].concat(...arr)
}
return arr
}
// 4,split和toString
可以通过 split 和 toString 两个⽅法来共同实现数组扁平化,由于数组会默认带⼀个 toString 的⽅法,
所以可以把数组直接转换成逗号分隔的字符串,然后再⽤ split ⽅法把字符串重新转换为数组,
function flatten3(arr){
return arr.toString.split(',');
}
// 5,es6中的flat
我们还可以直接调⽤ ES6 中的 flat ⽅法来实现数组扁平化。flat ⽅法的语法: arr.flat([depth])
其中 depth 是 flat 的参数,depth 是可以传递数组的展开深度(默认不填、数值是 1),即展开⼀层数
组。如果层数不确定,参数可以传进 Infinity,代表不论多少层都要展开:
function flatten4(arr){
return arr.falt(Infinity)
}
</script>
实现数组扁平化
最新推荐文章于 2023-12-08 13:25:04 发布
这篇博客介绍了数组扁平化的五种不同实现方法,包括递归、reduce函数、扩展运算符与some结合、split和toString以及ES6的flat方法。这些方法分别展示了如何在JavaScript中有效地处理嵌套数组,将它们转换为单一层次的数组。
摘要由CSDN通过智能技术生成