携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第34天,点击查看活动详情
前言
本篇章我们将了解lodash里的drop和dropRight两个对外导出方法的使用和实现。
drop
drop方法主要是创建一个切片数组,去除array
前面的n
个元素。(n
默认值为1。)
参数说明:
- 参数1:数组类型,表示要查询的数组。
- 参数2:数字类型,表示要去除的元素个数。
使用如下:
_.drop([1, 2, 3]);
// => [2, 3]
_.drop([1, 2, 3], 2);
// => [3]
_.drop([1, 2, 3], 5);
// => []
_.drop([1, 2, 3], 0);
// => [1, 2, 3]
drop方法在实现上借助baseSlice内部方法进行数组切割,通过toInteger方法处理参数将参数整数化。
具体处理逻辑如下:
- 进行严谨性判断,对于操作的目标数组为null返回空数组,长度为0返回空数组,参数不存在返回空数组。
- 对参数n进行初始化赋值,当第三个参数
guard
存在时个数n为undefined时赋值为1,否则调用toInteger方法对参数n进行转化,对于n小于0的都赋值为0. - 最后会返回baseSlice的调用结果。
其中,baseSlice方法在《 lodash里的slice方法 》中我们已经了解了其实现。toInteger方法则在《 lodash里to系列之如何将数据转换成数字类型 》中了解了其实现。
源码如下:
import baseSlice from './_baseSlice.js';
import toInteger from './toInteger.js';
function drop(array, n, guard) {
var length = array == null ? 0 : array.length;
if (!length) {
return [];
}
n = (guard || n === undefined) ? 1 : toInteger(n);
return baseSlice(array, n < 0 ? 0 : n, length);
}
dropRight
dropRight方法主要是创建一个切片数组,去除array
尾部的n
个元素。(n
默认值为1。)
参数说明:
- 参数1:数组类型,表示要查询的数组。
- 参数2:数字类型,表示要去除的元素个数,默认为1。
使用如下:
_.dropRight([1, 2, 3]);
// => [1, 2]
_.dropRight([1, 2, 3], 2);
// => [1]
_.dropRight([1, 2, 3], 5);
// => []
_.dropRight([1, 2, 3], 0);
// => [1, 2, 3]
源码如下:
import baseSlice from './_baseSlice.js';
import toInteger from './toInteger.js';
function dropRight(array, n, guard) {
var length = array == null ? 0 : array.length;
if (!length) {
return [];
}
n = (guard || n === undefined) ? 1 : toInteger(n);
n = length - n;
return baseSlice(array, 0, n < 0 ? 0 : n);
}
小结
本篇章我们主要通过了解drop和dropRight方法的实现,同时认识lodash几个内部方法。