lodash源码分析之sample
本文为读 lodash 源码的第一百六十二篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
源码分析
sample
的作用是从数组 array
中,随机取出其中的一个值。
源码如下:
function sample(array) {
const length = array == null ? 0 : array.length
return length ? array[Math.floor(Math.random() * length)] : undefined
}
要从 array
中随机取值,只需要计算出随机的索引位置,然后再将该索引的值取出即可。
在 javascript
中,Math.random
方法可以得到 0
到小于 1
的浮点数,但是数组的索引是从 0
到小于 length
的整数。
因为 Math.random
是 0
小于 1
的浮点数,因此使用 Math.random() * length
即可得到从 0
到小于 length
的浮点数。
又索引必须是整数,则使用 Math.floor
即可对所得到的随机数取整,并且是向下取整,从而不会得到超过索引的值 length
。
对于空数组和传入 null
值或者 undefined
,则直接返回 undefined
。
License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面