本文为读 lodash 源码的第一百六十一篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
import filter from './filter.js'
import filterObject from './filterObject.js'
import negate from './negate.js'
《lodash源码分析之filter》 《lodash源码分析之filterObject》 《lodash源码分析之negate》
reject
可以看作是 filter
的反操作。filter
会将 predicate
返回真值时的元素筛选出来,但是 reject
刚好想反,会将 predicate
返回假值时的元素筛选出来。
源码如下:
function reject(collection, predicate) {
const func = Array.isArray(collection) ? filter : filterObject
return func(collection, negate(predicate))
}
如果传入的 collection
为数组,则使用 filter
函数,否则使用 filterObject
函数。
接下来,可以看到,reject
并不传直接将 predicate
传给 filter
或者 filterObject
,而是会使用 negate
包裹,也就是对 predicate
的结果进行取反。
所以 reject
最终得到的结果会和 filter
刚好相反。
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面