多维数组展平的几种方式

需求:多维数组=>一维数组

let arr= [1, [2, [3, [4, 5]]], 6];
let str = JSON.stringify(arr); //"[1,[2,[3,[4,5]]],6]"
let arr2 = arr2 = arr.toString().split(’,’) // [“1”, “2”, “3”, “4”, “5”, “6”]

方式一:
ary.flat(Infinity)

方式二,递归:
function flatter(arr){
return [].concat(…arr.map(x =>
Array.isArray(x)? flatter(x) : x
))
}
或者:
while (ary.some(Array.isArray)) {
ary = [].concat(…ary);
}

方式三,reduce:
(function flatten(arr) {
return arr.reduce((prev,next) => {
return prev.concat(Array.isArray(next) ? flatten(next) : next)
},[])
})(arr)

方式四,toString +split
while,for,forEach,filter,map,Array.from,some,every,reduce,reduceRight

4.1for
var arr2 = arr.toString().split(’,’)
var arr3=[]
undefined
for(var i=0; i<arr2.length; i++){
arr3[i] = +arr2[i]
}

4.2 forEach
arr2.forEach(x=> arr3.push(+x))

4.3forFilter
arr2.filter(x=>arr3.push(+x))

4.4map
arr.toString().split(’,’).map(x=> +x )

4.5Array.from
Array.from(arr2,x=>+x)

4.6while (some不支持,因为遍历到一个true就返回)
var index=0
var arr3=[]
while (index <arr2.length) {
arr3.push(+arr2[index])
index++
}

4.7every //返回true
arr2.every(x=>arr3.push(+x))

4.8reduce关键要设置初始值
arr2.reduce((total,item)=>arr3.push(+item),0)

方式五,正则替换
把str 里面的中括号删除
JSON.parse("["+str.replace(/[|]/g, ‘’)+"]")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

前端段

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

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

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

打赏作者

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

抵扣说明:

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

余额充值