HeftyKoo / pocket-lodash

读lodash源码,lodash source code analyze
https://www.gitbook.com/book/yeyuqiudeng/pocket-lodash/details
Other
404 stars 51 forks source link

lodash源码分析之arrayIncludes #14

Open HeftyKoo opened 6 years ago

HeftyKoo commented 6 years ago

找到一样你所钟爱的事物,然后,永不放手。

——小熊维尼

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

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

依赖

import baseIndexOf from './baseIndexOf.js'

《lodash源码分析之baseIndexOf》

源码分析

function arrayIncludes(array, value) {
  const length = array == null ? 0 : array.length
  return !!length && baseIndexOf(array, value, 0) > -1
}

arrayIncludes 的作用类似于数组的 includes 方法,如果查找的元素存在于数组中,则返回 true ,不存在返回 false

arrayIncludesincludes 方法的区别在于 arrayIncludes 函数不能指定数组从何处开始查找,而 includes 方法则允许指定开始查找的位置。

length 为数组的长度,如果数组为 null 或者 undefined ,则默认 length0

如果 length0 ,则返回 false ,否则调用 baseIndexOf 查找元素 value 在数组中的索引,如果索引大于 -1 ,表示元素在数组中存在,返回 true ,否则返回 false

License

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

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

作者:对角另一面

ghost commented 6 years ago

这种函数式库都是些独立的方法,拆得很散去专门讲一个个方法感觉没有太大必要~我觉得这种库讲它的构建原理和贯穿的函数式思维似乎更有意义,对于千篇一律的函数部分,针对性讲解即可

HeftyKoo commented 6 years ago

@xjh776 : 这种函数式库都是些独立的方法,拆得很散去专门讲一个个方法感觉没有太大必要~我觉得这种库讲它的构建原理和贯穿的函数式思维似乎更有意义,对于千篇一律的函数部分,针对性讲解即可

你说得很对。

但是 讲它的构建原理和贯穿的函数式思维 我目前可能能力不够,讲得不会很透彻,而且在写之前,肯定需要通读,需要集中一段时间和精力来做这件事。

我按照 lodash 的文件组织方式拆散来写,有几点原因:

  1. 利用零碎的时间来看源码,记录是坚持看的激励
  2. 对于没有看过源码的读者,小段代码理解起来会更快,对于 lodash 这样的库,可能更多人会想看某个函数的具体实现
ghost commented 6 years ago

嗯~蛮好呢。我过年这段时间也在读zepto源码,我写得分析简洁得过分,感觉你写的很细致啊,哈哈