JavaScript之数组扁平化
分类:javascript
每天做个总结吧,坚持就是胜利!
/**
@date 2021-06-05
@description JavaScript之数组扁平化
*/
壹(序)
日常开发中我们经常会需要处理数组扁平化
问题,现在已经有flat
方法,今天自己实现一下。
贰(实现)
使用递归
,遇到数组则再次调用处理函数:
const flat = (arr) => {
const res = [];
arr.forEach((item) => {
if (Array.isArray(item)) {
res.push(...flat(item));
} else {
res.push(item);
}
});
return res;
};
const arr = [1, [2, [3]], [4, 5, [6, 7, [8]]]];
console.log(flat(arr)); // [ 1, 2, 3, 4, 5, 6, 7, 8 ]
叁(引申)
真实的flat
函数是可以传入一个参数depth
,表示递归深度,默认为1
;
const arr = [1, [2, [3]], [4, 5, [6, 7, [8]]]];
console.log(arr.flat()); // [1, 2, [3], 4, 5, [6, 7, [8]]]
下面实现depth
指定递归深度:
const flat = (arr, depth = 1) => {
if (depth === 0) {
return arr;
}
const res = [];
arr.forEach((item) => {
if (Array.isArray(item)) {
res.push(...flat(item, depth - 1));
} else {
res.push(item);
}
});
return res;
};
const arr = [1, [2, [3]], [4, 5, [6, 7, [8]]]];
console.log(flat(arr, 2)); // [ 1, 2, 3, 4, 5, 6, 7, [ 8 ] ]
console.log(flat(arr, 3)); // [ 1, 2, 3, 4, 5, 6, 7, 8 ]
一线大厂高级前端编写,前端初中阶面试题,帮助初学者应聘,需要联系微信:javadudu