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
baseRange 用来根据 start 、 end 和 step 来创建一个数组,这个数组的所有数字都在 start 和 end 之间,并且相邻两个之间的差值是 step 。 一般情况下,如果 start 比 end 小,则从小大到排序,否则从大到小排序,如果 fromRight 为 true ,则排序方式和前面相反。
baseRange
start
end
step
fromRight
true
源码如下:
function baseRange(start, end, step, fromRight) { let index = -1 let length = Math.max(Math.ceil((end - start) / (step || 1)), 0) const result = new Array(length) while (length--) { result[fromRight ? length : ++index] = start start += step } return result }
如果 step 没有传,则默认 step 为 1 。
1
使用 (end - start) / step 可以得到数组的个数,但是这个结果可能为小数,因此使用 Math.ceil 来取整,又因为计算出来的个数可能为负数,因此再用 Math.max 来取和 0 相比的较大值,避免出现个数为负数的情况。
(end - start) / step
Math.ceil
Math.max
0
使用 while 遍历,这时 length 是递减的, index 是递增的,如果 fromRight 为 true ,则使用 length 作为索引,否则使用 index ,因此 fromRight 为 true 时, 和正常的排序方式刚好相反。
while
length
index
每次遍历都将 start 都递加上 step ,如果 step 为正数,则递增,如果为负数,则递减。
署名-非商业性使用-禁止演绎 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
源码分析
baseRange
用来根据start
、end
和step
来创建一个数组,这个数组的所有数字都在start
和end
之间,并且相邻两个之间的差值是step
。 一般情况下,如果start
比end
小,则从小大到排序,否则从大到小排序,如果fromRight
为true
,则排序方式和前面相反。源码如下:
如果
step
没有传,则默认step
为1
。使用
(end - start) / step
可以得到数组的个数,但是这个结果可能为小数,因此使用Math.ceil
来取整,又因为计算出来的个数可能为负数,因此再用Math.max
来取和0
相比的较大值,避免出现个数为负数的情况。使用
while
遍历,这时length
是递减的,index
是递增的,如果fromRight
为true
,则使用length
作为索引,否则使用index
,因此fromRight
为true
时, 和正常的排序方式刚好相反。每次遍历都将
start
都递加上step
,如果step
为正数,则递增,如果为负数,则递减。License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered: