Skip to content
New issue

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源码分析之takeRight #94

Open
HeftyKoo opened this issue Feb 26, 2020 · 0 comments
Open

lodash源码分析之takeRight #94

HeftyKoo opened this issue Feb 26, 2020 · 0 comments
Labels
api 暴露出来的接口 系列文章

Comments

@HeftyKoo
Copy link
Owner

HeftyKoo commented Feb 26, 2020

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

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

依赖

import slice from './slice.js'

《读lodash源码之从slice看稀疏数组与密集数组》

源码分析

takeRight 的作用跟 take 差不多,只不过 takeRight 是截取数组后面的 n 个元素作为新的数组返回。

源码如下:

function takeRight(array, n=1) {
  const length = array == null ? 0 : array.length
  if (!length) {
    return []
  }
  n = length - n
  return slice(array, n < 0 ? 0 : n, length)
}

因为是从后截取,所以 slice 的第三个参数 end 很容易就确定为 length,即数组的长度。

那第二个参数 start 是什么呢?因为是截取 n 个元素,所以 start 也很容易知道为 length - n

此时还要处理 length - n 小于 0 的情况,这种情况下,截取的元素数量超出是 array 的范围,在这种情况下,只能将 array 的所有元素都返回,也即 start0

License

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

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

作者:对角另一面

@HeftyKoo HeftyKoo added 系列文章 api 暴露出来的接口 labels Feb 26, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api 暴露出来的接口 系列文章
Projects
None yet
Development

No branches or pull requests

1 participant