前端数组扁平化的几种方法

数组扁平化是将一个多维数组转化为一维数组

[1,[2,[3,4,[5,6]]]] -------> [1, 2, 3, 4, 5, 6]

可以使用的方法:

1.float:Array.prototype.flat():将嵌套的数组变成一维数组。该方法返回一个新数组,对原数据没有影响

let arr = [1,[2,[3,4,[5,6]]]]
const result = arr.flat(Infinity)
console.log(result)      // [1, 2, 3, 4, 5, 6]

console.log(arr.flat(1)) // [1, 2, [3,4,[5,6]]]
console.log(arr.flat(2)) // [1, 2, 3, 4, [5,6]]
console.log(arr.flat(3)) // [1, 2, 3, 4, 5, 6]

2.正则表达式,利用正则表达式进行转换

// 正则表达式
const result =JSON.parse('['+JSON.stringify(arr).replace(/\[|\]/g,'').split(',')+']')
console.log(result)    // [1, 2, 3, 4, 5, 6]
// 分析,先利用正则去掉数组中的'['和']'
console.log(JSON.stringify(arr).replace(/\[|\]/g,'')) // 1,2,3,4,5,6
console.log(JSON.stringify(arr).replace(/\[|\]/g,'').split(','))  
//["1", "2", "3", "4", "5", "6"]

3.利用reduce处理

// reduce()
const flatten  = arr => {
   return arr.reduce((pre,cur) => {
   console.log('pre',pre)  //表示上一次调用回调时的返回值,或者初始值;
   console.log('cur',cur)  // 表示当前正在处理的数组元素
   return pre.concat(Array.isArray(cur) ? flatten(cur) : cur  )
  },[])
}
console.log('aaaaaaaaa',flatten(arr)) // [1, 2, 3, 4, 5, 6]

4.利用递归解决

// 递归调用
const temp = []
const fun = arr => {
for (var i = 0 ;i<arr.length;i++) {
  if (Array.isArray(arr[i])) {
    fun(arr[i])  //是数组的话继续递归处理,直到处理到一维
  }else {
    temp.push(arr[i])  //将处理查找到的一维数组值存储到temp中
  }
 }
}
fun(arr)
console.log('aaaaaaaaa',temp) // [1, 2, 3, 4, 5, 6]

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值