本文内容
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(