flatten()、flattenDeep()、flattenDepth()
每天更新一个lodash方法源码解析
flatten()、flattenDeep()、flattenDepth()都是用于对数组的扁平化处理,不同之处在于扁平化的层级,flatten()是对数组进行一层扁平化处理,flattenDeep()是对数组完全扁平化处理,flattenDepth()是对数组进行指定层级的扁平化处理,其内部的实现都是基于baseFlatten()方法。
flatten()方法源码:
// flatten.js
// flatten方法用于对数组进行扁平化一层的操作
function flatten(array) {
// 取数组的length
const length = array == null ? 0 : array.length
// 当length大于0时,调用baseFlatten方法,扁平化层级为1
return length ? baseFlatten(array, 1) : []
}
flattenDeep()方法源码:
// flattenDeep.js
// flattenDeep方法用于对数组完全扁平化处理
function flattenDeep(array) {
// 取数组的length
const length = array == null ? 0 : array.length
// 当length大于0时,调用baseFlatten方法,扁平化层级为INFINITY(无限大),意思就是将数组中的元素扁平化到不能扁平化了为止
return length ? baseFlatten(array, INFINITY) : []
}
flattenDepth()方法源码:
// flattenDepth.js
// flattenDepth方法通过指定扁平化层级depth来实现数组扁平化到指定层
function flattenDepth(array, depth) {
// 取数组的length
const length