lodash源码分析之filter

本文为读 lodash 源码的第一百零五篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash

gitbook也会同步仓库的更新,gitbook地址:pocket-lodash

源码分析

es6 大行其道的当下,相信大家对 es5filter 的用法已经很熟悉的了。

它的作用是数组过滤,只将预测函数 predicate 返回真值时的元素过滤出来。

源码如下:

function filter(array, predicate) {
  let index = -1
  let resIndex = 0
  const length = array == null ? 0 : array.length
  const result = []

  while (++index < length) {
    const value = array[index]
    if (predicate(value, index, array)) {
      result[resIndex++] = value
    }
  }
  return result
}

使用 index 作为迭代计数器,用 resIndex 作为结果集 result 的下标计数器。

然后遍历 array ,在迭代过程中,将元素 value 取出,然后将 value 和当前 indexarray 传给 predicate 函数,如果返回真值,则将当前值存入结果集中。

最后将结果 result 返回。

License

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

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

作者:对角另一面

results matching ""

    No results matching ""