填充数组

# 描述

fill 方法用给定的值填充一个数组(将数组的每个元素都指向这个值)

[1, 2, 3].fill(0);
// [0, 0, 0]

另外还可以指定填充的起始位置和结束位置

[1, 2, 3, 4, 5].fill(0, 0, 3);
// [0, 0, 0, 4, 5]
// 从索引 0 开始,到索引 3 之前结束

# 边界情况

# 如果缺少第三个参数,即没有指定填充的结束位置,默认是填充到数组最后一个元素

[1, 2, 3, 4, 5].fill(0, 2);
// [1, 2, 0, 0, 0]
// 从索引 2 开始到数组最后一个元素

# 后两个参数是负数

如果第二个参数是负数:

[1, 2, 3].fill(0, -2);
// [1, 0, 0]
// -1 会被当成数组倒数第二个处理

相应的,如果第三个参数也是负数,也会这样处理

[1, 2, 3, 4, 5].fill(0, -4, -1);
// [1, 0, 0, 0, 5]
// 从倒数第 4 个元素开始,到倒数第一个元素之前结束

# 第二个参数小于第三个参数

当第二个参数小于第三个参数的时候,fill 方法不做任何处理。

[1, 2, 3, 4, 5].fill(0, 4, 2);
// [1, 2, 3, 4, 5]

[1, 2, 3, 4, 5].fill(0, -2, -4);
// [1, 2, 3, 4, 5]

# 第二个参数不是数值

[1, 2, 3].fill(0, 'a');
// [0, 0, 0]

[1, 2, 3].fill(0, true);
// [1, 0, 0]

[1, 2, 3].fill(0, false);
// [0, 0, 0]

可以看到 true 是一个比较特殊的值,在 fill 中会被当成 1 处理。

上次更新: 8/9/2021, 11:31:12 AM