持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情
今天带大家学习数组的fill方法
语法
arr.fill(value[, start[, end]])
参数
-
value:用来填充数组元素的值。 -
start:可选。起始索引,默认值为0。如果start是个负数,则开始索引会被自动计算成为length + start。 -
end:可选。终止索引,默认值为this.length。如果end是个负数,则结束索引会被自动计算成为length + end。
返回值
返回修改后的数组。
例子
一个参数
只传value参数时,start和end的默认值分别为0和3,等价于list.fill(0, 0, 3),即从下标0开始到下标3截止,用数字0填充替换掉。
两个参数
以上例子均可先把第三个参数end补齐,然后再做填充替换,很简单就不展开了。需要注意的是当start参数超过了数组长度,不对数组进行操作。
三个参数
道理同上
参数为负数
遇到负数的参数,为了便于自己理解,我们需要先转成正数,即上述有说到的length + start或者length + end,当length + start或者length + end的值小于0,我们按0处理。
手写
Array.prototype._fill = function (value, start, end) {
if(value === undefined) return this;
start = start ? (start > 0 ? (start < this.length ? start : this.length) : (start + this.length > 0 ? start + this.length : 0)) : 0;
end = end ? (end > 0 ? (end < this.length ? end : this.length) : (end + this.length > 0 ? end + this.length : 0)) : this.length;
for (let i = start; i < end; i++) {
this[i] = value;
}
return this;
}
上面代码看着有点复杂,其实就是对start和end做一个转化,用以替换数组元素,对照着我们前面说的那些要点,其实还是很容易写出来的。
结语
今天关于数组fill的介绍就讲到这里,关注我获取更多有关数组方法的讲解,后续会持续更新。我是末世未然,一个爱折腾的新晋奶爸,祝好