We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
本文为读 lodash 源码的第九十九篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
import baseFlatten from './.internal/baseFlatten.js' import baseUniq from './.internal/baseUniq.js' import isArrayLikeObject from './isArrayLikeObject.js'
《lodash源码分析之baseFlatten》 《lodash源码分析之baseUniq》 《lodash源码分析之isArrayLikeObject》
union 的作用是将多个数组合并成一个数组,并且合成的数组已经去重,而且按照传入的顺序合并。
union
源码如下:
function union(...arrays) { return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)) }
union 调用按照以下的方式调用:
union([2, 3], [1, 2]) // => [2, 3, 1]
因为用 ... 解构,传入的参数会合并成一个二维数组 [[2,3], [1,2]] ,所以用 baseFlatten 先将二维数组 arrays 拍平,这就完成了合并的功能。
...
[[2,3], [1,2]]
baseFlatten
arrays
注意 baseFlatten 的第三个参数 predicate 为 isArrayLikeObject ,表示只有数组或者类数组才会通过检测,第四个参数 isStrict 为 true ,表示没有通过 predicate 检测的参数会被直接舍弃掉。
predicate
isArrayLikeObject
isStrict
true
例如这样调用:
union([2, 3], 1, [1, 2])
因为第二个参数不是数组,会被直接舍弃掉。
在将 arrays 拍平后,调用 baseUniq 去重,即可实现合并和去重的功能
baseUniq
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered:
No branches or pull requests
本文为读 lodash 源码的第九十九篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
依赖
《lodash源码分析之baseFlatten》
《lodash源码分析之baseUniq》
《lodash源码分析之isArrayLikeObject》
源码分析
union
的作用是将多个数组合并成一个数组,并且合成的数组已经去重,而且按照传入的顺序合并。源码如下:
union
调用按照以下的方式调用:因为用
...
解构,传入的参数会合并成一个二维数组[[2,3], [1,2]]
,所以用baseFlatten
先将二维数组arrays
拍平,这就完成了合并的功能。注意
baseFlatten
的第三个参数predicate
为isArrayLikeObject
,表示只有数组或者类数组才会通过检测,第四个参数isStrict
为true
,表示没有通过predicate
检测的参数会被直接舍弃掉。例如这样调用:
因为第二个参数不是数组,会被直接舍弃掉。
在将
arrays
拍平后,调用baseUniq
去重,即可实现合并和去重的功能License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered: