持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第18天,点击查看活动详情
今天我们来学习下数组的slice方法。
语法
array.slice(start, end)
参数
start: 可选。规定从何处开始选取。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2)表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。end: 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从start到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。slice(-2,-1)表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
返回值
返回一个新的数组,包含从 start(包括该元素) 到 end (不包括该元素)的 原数组 中的元素。
实测
不传参
只传start
参数end
返回值
手写
根据以上分析不难写出以下代码:
Array.prototype._slice = function(start, end) {
if(!start) return [...this];
let res = [];
start = start > 0 ? start : this.length + start;
if(!end) {
end = this.length;
}
end = end > 0 ? end : this.length + end;
this.forEach((v, i) => {
if(i >= start && i < end) {
res.push(v);
}
})
return res;
}
以上是本方法的核心逻辑,还有更多严谨的限制条件这边没有处理,大家可自行研究。
结语
今天关于数组slice的介绍就讲到这里,关注我获取更多有关数组方法的讲解,后续会持续更新。我是末世未然,一个爱折腾的新晋奶爸,祝好