We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
本文为读 lodash 源码的第八十四篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
import baseSortedIndex from './.internal/baseSortedIndex.js' import eq from './eq.js'
《lodash源码分析之baseSortedIndex》
《lodash源码分析之NaN不是NaN》
sortedIndexOf 的作用跟 indexOf 差不多,都是查找指定的 value 在数组 array 中的位置。
sortedIndexOf
indexOf
value
array
但是 sortedIndexOf 要求传入的数组是已经排序好的数组,在这种情况下,因为 sortedIndexOf 会使用二分法查找,比 indexOf 的性能更加高。
具体源码如下:
function sortedIndexOf(array, value) { const length = array == null ? 0 : array.length if (length) { const index = baseSortedIndex(array, value) if (index < length && eq(array[index], value)) { return index } } return -1 }
首先获取数组 array 的长度,如果数组没有传,或者数组的长度为 0 ,也即空数组,直接返回 -1 ,跟 indexOf 的行为一致。
0
-1
接着调用 baseSortedIndex,由 baseSortedIndex 的源码分析可知,baseSortedIndex 使用的是二分法查找,这个找出的是 value 应该插入到数组中的位置index 。
baseSortedIndex
index
这时,还不能断定 value 在数组中存在,要判断这个 index 为 value 在数组中的位置,首先,index 要比数组的长度小,否则,现在的数组根本没有这个 index。
其次,在 index 位置上的值要和 value 相等,这里使用 eq 函数进行判断。
eq
如果满足这两个条件,返回 value 所在的索引值 index,否则返回 -1 。
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered:
No branches or pull requests
本文为读 lodash 源码的第八十四篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
依赖
《lodash源码分析之baseSortedIndex》
《lodash源码分析之NaN不是NaN》
源码分析
sortedIndexOf
的作用跟indexOf
差不多,都是查找指定的value
在数组array
中的位置。但是
sortedIndexOf
要求传入的数组是已经排序好的数组,在这种情况下,因为sortedIndexOf
会使用二分法查找,比indexOf
的性能更加高。具体源码如下:
首先获取数组
array
的长度,如果数组没有传,或者数组的长度为0
,也即空数组,直接返回-1
,跟indexOf
的行为一致。接着调用
baseSortedIndex
,由baseSortedIndex
的源码分析可知,baseSortedIndex
使用的是二分法查找,这个找出的是value
应该插入到数组中的位置index
。这时,还不能断定
value
在数组中存在,要判断这个index
为value
在数组中的位置,首先,index
要比数组的长度小,否则,现在的数组根本没有这个index
。其次,在
index
位置上的值要和value
相等,这里使用eq
函数进行判断。如果满足这两个条件,返回
value
所在的索引值index
,否则返回-1
。License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered: