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 判断传入的是否为数组或者类数组,如果不是,返回一个空数组。

要剔除指定的值,其实就是要找出 arrayvalues 的差集,因此使用 baseDifference 传入这两个数组即可。

License

署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)

最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:

作者:对角另一面

results matching ""

    No results matching ""