美文网首页
Lodash源码解析-_.slice

Lodash源码解析-_.slice

作者: 小妍妍说 | 来源:发表于2021-07-01 09:42 被阅读0次
_.slice(array, [start=0], [end=array.length])

裁剪数组array,从 start 位置开始到end结束,但不包括 end 本身的位置。

例子:

_.slice([0,1, 2, 3, 4, 5], 2, 4)
// =>[2, 3]

_.slice源码解析:

function slice(array, start, end) {
  // 严谨的数据校验
  let length = array == null ? 0 : array.length
  if (!length) {
    return []
  }
  start = start == null ? 0 : start
  end = end === undefined ? length : end

  if (start < 0) {
    start = -start > length ? 0 : (length + start)
  }
  end = end > length ? length : end   
  if (end < 0) {
    end += length
  }
  length = start > end ? 0 : ((end - start) >>> 0)   // length为裁剪后新数组的长度
  start >>>= 0   // >>>是非符号移位,目的是保证start为有意义的正整数

  let index = -1
  const result = new Array(length)
// 将原数组的第index+start元素赋值给裁剪后的新数组
  while (++index < length) {
    result[index] = array[index + start]
  }
  return result
}

相关文章

网友评论

      本文标题:Lodash源码解析-_.slice

      本文链接:https://www.haomeiwen.com/subject/kxxkultx.html