lodash源码分析之without
本文为读 lodash 源码的第一百零九篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
依赖
import baseDifference from './.internal/baseDifference.js'
import isArrayLikeObject from './isArrayLikeObject.js'
《lodash源码分析之数组的差集》 《lodash源码分析之isArrayLikeObject》
源码分析
without 的作用是剔除指定数组 array 中指定的值,剩余的值组成新的数组返回 。
其作用和 pull 相似,但是 without 不会更改原数组 array ,得到的是一个新的数组。
源码如下:
function without(array, ...values) {
return isArrayLikeObject(array) ? baseDifference(array, values) : []
}
without 接收不定参数,将除第一个参数外,需要剔除的值用 ... 操作符组成一个数组 values 。
用 isArrayLikeObject 判断传入的是否为数组或者类数组,如果不是,返回一个空数组。
要剔除指定的值,其实就是要找出 array 和 values 的差集,因此使用 baseDifference 传入这两个数组即可。
License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面