# flatMapDeep

# Description

这个方法类似 flatMap 不同之处在于,flatMapDeep 会继续扁平化递归映射的结果。

# Params

(collection, iteratee)

# Return

Array

# Depend

import baseFlatten from './.internal/baseFlatten.js'
import map from './map.js'

baseFlatten 源码分析

map 源码分析

# Code

const INFINITY = 1 / 0

function flatMapDeep(collection, iteratee) {
  return baseFlatten(map(collection, iteratee), INFINITY)
}

# Analyze

flatMap 类似,只不过这里传给 baseFlatten 的深度为 INFINITY ,也就是说会一直递归处理,加上 baseFlatten 里面对于 value 的判断,就可以达到递归到只有一层

# Remark

  1. Array.prototype.flat() MDN (opens new window) 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。

# Example

console.log(flatMapDeep([[[[1], [2], [3]], [4]], [5], [6]], (v) => v)) // [ 1, 2, 3, 4, 5, 6 ]
console.log([[[[1], [2], [3]], [4]], [5], [6]].flat(1/0)) // [ 1, 2, 3, 4, 5, 6 ]