js平铺数组

博客介绍了平铺数组可使用ES6的flat方法,但微信小程序不支持该方法,作者写了递归函数来实现。此外,还提到一个简洁办法,不过会把数组项转成字符串,且会丢掉值为(,)的项。

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

平铺数组可以使用ES6的flat方法。

但是在微信小程序里面并不支持ES6的flat方法,所以我写了下面这个递归函数

let flat=function(arr,n=0){
	return arr.reduce((a,b)=>{
		if(Object.prototype.toString.call(b)==='[object Array]'&&n--){
			return a.concat(flat(b,n))
		}else{
			return a.concat(b)
		}
	},[])
}
let arr=[1,[[2,3,[4]]]]
console.log(flat(arr,Infinity))
//第二个参数Infinity表示展开所有层,因为Infinity加减乘除的结果仍然是Infinity,且Infinity的布尔值为真

另外还有一个简洁的办法,但是会把数组的每一项都转换成字符串,且会丢掉值为(,)的项

var arr=[1,[2,[3,4,5],6,7,8],90]
console.info(arr.toString().replace(/,/g,'').split(','))
//或
console.log(arr.toString().split('').filter(v=>v!==','))

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值