实现数组扁平化的几种方式
创始人
2024-11-14 04:09:12
0

目标: 实现数组扁平化[1,[2,[3,4,5]]] ==> [1,2,3,4,5]

我们有几种方法可以实现,分别为:

1、递归

function flatten(list){ 	return list.reduce((tar, cur) => { 		if(Array.isArray(cur)){ 			tar = tar.concat(flatten(cur)); 		} else { 			tar.push(cur); 		} 		return tar; 	}, []); } flatten([1,[2,[3,4,5]]]) // [1, 2, 3, 4, 5] 

递归的方法就是一直合并数组中是数组的元素,这里问题不大,这个方法适用于结构相对简单的数据,如果数据量特别的大,使用递归的话,回应性性能

2、toString方法

function flatten(list){     let str = list.toString();     return str.split(',').map(item => +item); } flatten([1,[2,[3,4,5]]]) // [1, 2, 3, 4, 5] 

使用toString方法可以将数组转化为数组内部元素的字符串,然后针对该字符串返回扁平化的数组,只是这种方法如果遇到包含对象的数组就不行了

3、正则表达式结合JSON

function flatten(list){     let newStr = JSON.stringify(list).replace(/\[|\]/g, '');     return JSON.parse(`[${newStr}]`); } flatten([1,[2,[3,4,5]]]) // [1, 2, 3, 4, 5] 

这个办法同样适用于结构相对简单的数组,如果遇到包含对象的数组就不行了

4、终极武器flat

[1,100,[2,[3,4,5]]].flat(3) // [1, 100, 2, 3, 4, 5] 

利用数组的flat方法可以实现数组的扁平化
flat() 方法创建一个新的数组,并根据指定深度递归地将所有子数组元素拼接到新的数组中。

flat传入的参数,指定要提取嵌套数组的结构深度,默认值为 1。
假使,我们不知道深度是多少的情况下,可以传入Infinity

[1,100,[2,[3,4,5]]].flat(Infinity) // [1, 100, 2, 3, 4, 5] 

另外,使用flat() 方法会忽略数组中的空槽。

[1,2,,3,,,,6].flat() // [1,2,3,6] 

所以,利用这个特性,我们还可以用它来删除数组的空槽数据哈!

记住吧!

相关内容

热门资讯

总算了解!wepoke透明挂辅... 总算了解!wepoke透明挂辅助,太坑了都是真的是有挂(2026已更新)(哔哩哔哩);亲,有的,ai...
1分钟透视挂!天酷大厅辅助,新... 1分钟透视挂!天酷大厅辅助,新道游辅助软件下载(微信链接金花辅助开挂方法)1、新道游辅助软件下载系统...
第6分钟了解!大唐辅助神器插件... 第6分钟了解!大唐辅助神器插件开挂,天蝎大厅辅助软件透视挂(最新版本2026)1、金币登录送、破产送...
2024教程“wepoker有... 2024教程“wepoker有挂吗 百度知道”(透视)详细开挂辅助技巧wepoker透视模式为玩家提...
黑科技辅助(WepOke)外挂... 黑科技辅助(WepOke)外挂软件透明挂智能ai代打辅助器安装(透视)2025新版总结(2025已更...
推荐十款!微扑克微乐辅助,太坑... 推荐十款!微扑克微乐辅助,太坑了最初存在有挂(2026已更新)(哔哩哔哩);亲,有的,ai轻松简单,...
第1分钟了解!新九游辅助器软件... 第1分钟了解!新九游辅助器软件激活码插件开挂,爱玩娱乐暗堡辅助软件透视挂(最新版本2026)1、该软...
三分钟透视挂!潘茄辅助,新道游... 三分钟透视挂!潘茄辅助,新道游游戏辅助器安装包(微信链接炸金花辅助开挂攻略)1、让任何用户在无需新道...
我来向大家传授“德扑之星方法购... 我来向大家传授“德扑之星方法购买”(透视)详细开挂辅助方法的透视功能存在一定风险,可能有私人局透视方...
黑科技辅助(最新版wpk)外挂... 黑科技辅助(最新版wpk)外挂软件透明挂智能ai代打辅助安装插件(透视)2025新版(2022已更新...