JS数组扁平化处理方法总结

37 篇文章 0 订阅
26 篇文章 0 订阅

1、toString

const arr = [1, 2, 3, [4, 5, [6, 7]]];
const flatten = arr.toString().split(',');
console.log(flatten);
//["1", "2", "3", "4", "5", "6", "7"]

优点:简单,方便,对原数据没有影响
缺点:最好数组元素全是数字或字符,不会跳过空位

2、join

const arr = [1, 2, 3, [4, 5, [6, 7]]];
const flatten = arr.join(',').split(',');
console.log(flatten);
//["1", "2", "3", "4", "5", "6", "7"]

优点和缺点同toString

3、flat

const arr = [1, 2, 3, [4, 5, [6, 7]]];
const flatten = arr.flat(Infinity); //Array.flat(n) n表示维度
console.log(flatten);
//["1", "2", "3", "4", "5", "6", "7"]

优点:会跳过空位,返回新数组,不会修改原数组

4、扩展运算符(…)

const arr = [1, 2, 3, [4, 5]];
console.log([].concat(...arr));
//["1", "2", "3", "4", "5"]

优点:简单,方便 缺点:只能扁平化一层

5、递归

function flat(arr) {
	let result = []
	for (let i of arr) {
		Array.isArray(i) ? result = result.concat(flat(i)) : result.push(i)
		//i是Array的实例?是的话继续递归展开,不是的话将i放入结果数组
	}
	return result
}
flat(arr)

6、reduce()递归

function flat(arr) {
	return arr.reduce((a, i) => {
		return a.concat(i instanceof Array ? flat(i) : i)
	}, [])
}
flat(arr)

7、some+while

while (arr.some(Array.isArray)) {
	arr = [].concat(...arr);
}

参考自:1、https://juejin.cn/post/6907269018588020743
2、https://lolitasian.blog.csdn.net/article/details/105156340

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值