1.扁平化数组
数组扁平化的应用场景,数组扁平化一般在一些多维数组的应用中会出现, 因为操作多维数组会较为麻烦,因此将多维数组扁平化 变为一维数组后, 将大大简化我们对数组的操作。
利用array中flat函数实现
<script>
//arr.flat(deepth)
//deepth为调用时传递的参数,表示需要展开的层数。
//默认展开一层。当传入 Infinity 时,相当于扁平化最深层次的数组。
const arr=[1,2,3,[4,[5,6]]]
const result = arr.flat();
console.log(result)
</script>
![](https://i-blog.csdnimg.cn/blog_migrate/41e72a1e7e95add2236a36aa60f541cc.png)
通过递归实现flat函数
递归的思路很简单,遍历数组,如果数组内部出现数组,进行递归操作,直到不是数组类型或者层数达到所给参数的阈值,加入到答案数组中。
//利用递归模拟实现flat
<script>
function flat1(nums, deepth = 1){
// 如果是 无穷大,默认10层
if(deepth === Infinity){
deepth = 10;
}
// 判断参数
if(deepth <= 0){
return nums;
}
const result = [];
//两个参数(数组,层数)
function flats(arr, deep){
arr.forEach(element => {
// 控制递归条件
if(Array.isArray(element) && deep > 0){
flats(element, deep - 1);
}else{
result.push(element)
}
});
}
//递归调用
flats(nums,deepth)
return result;
}
const arr=[1,2,3,[4,[5,6]]]
console.log(flat1(arr,1))
</script>