【前端面试】6种方法实现数组扁平化(数组降维)

本文详细介绍了数组扁平化的核心思想,即遍历数组元素,判断是否为子数组并递归处理。文章列举了六种实现方式:1. 使用lodash插件;2. 利用reduce()函数;3. 结合toString(), split()和map()方法;4. 结合join(), split()和map()方法;5. 遍历配合递归;6. 使用扩展运算符。" 124386833,12838836,Springboot与K8s集成:弃用Springcloud.Eureka,"['java', 'spring', '微服务', 'kubernetes', 'springcloud']
摘要由CSDN通过智能技术生成

本文内容

1、介绍数组扁平化(数组降维)的核心思想
2、使用6种方法实现数组扁平化


核心思想

效果

// 源数组:[1, [2, [3, [4, 5]]]]
// 降维后数组:[1, 2, 3, 4, 5]

思路

对源数组的所有元素进行遍历

判断遍历的元素是否为数组

若不是数组则.concat()进之前的计算结果中(初始计算结果为空数组[] ),

若是数组则递归调用函数继续遍历。


6种实现方法

1、lodash插件

let arr = [1, [2, [3, [4, 5]]]];
let result = _.flattenDeep(arr);
console.log(result);
// [ 1, 2, 3, 4, 5 ]

// lodash方法补充:
// _.flattenDeep(array)  ==>  将array递归为一维数组
// _.flatten(array)  =>  减少一级array嵌套深度
// _.flattenDepth(array, [depth=1])  =>  根据 depth 递归减少 array 的嵌套层级

2、reduce()

function flatten(array) {
   
  return array.reduce((result, item) => {
   
    return result.concat(Array.isArray(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值