ES7 中的 Array.prototype.fill 方法详解

阅读时长 4 分钟读完

Array.prototype.fill() 方法是 ES7 在 Array 原型对象上新增的方法,它的作用是将数组中的所有元素替换为静态值。本文将对该方法进行详细讲解。

语法

arr.fill(value[, start [, end]])

参数说明:

  • value:用于替换数组中的元素的静态值。
  • start:起始填充位置(默认:0)。
  • end:结束填充位置(默认:arr.length)。

功能

fill() 方法会将数组中指定范围内的所有元素替换为静态值。

示例

以下为示例代码:

-- -------------------- ---- -------
-- ---
----- ---- - --- -- -- -- ---
------------- -- --- -- -- -- --

-- ---
----- ---- - --- -- -- -- ---
------------ -- --- -- --- -- -- -- --

-- ---
----- ---- - --- ---------
------------- -- --- -- -- -- --

第一个示例中,arr1 数组中的所有元素都被替换成了 0。

第二个示例中,arr2 数组的第二个元素到第四个元素(不包括第四个元素)被替换成了 0。

第三个示例中,通过 new Array(5) 创建的数组中,所有元素都是 undefined。使用 fill() 方法后,所有元素都被替换成了 0。

注意事项

  • 不能替换 undefined 和 null 元素。
  • 可以使用负数值来代表从数组的末尾开始计算的填充位置。
  • startend 参数都是可选的,但是如果只传了 start 参数,那么 fill() 方法会以 start 作为起始位置,end 默认为 arr.length。如果两个参数都没有传递,那么数组所有元素都将被替换成 value

深入理解

虽然 fill() 方法看起来很简单,但是在实际开发中,我们需要深入理解该方法的内部机制,从而更好地使用这个方法。

替换所有元素

实际上,我们可以通过以下方式,使用 fill() 方法来替换数组中的所有元素:

这样,数组 arr 中的所有元素都被替换成了字符串 'a'

替换部分元素

如果我们只想替换数组中的一部分元素,可以使用如下语法:

这样,数组 arr 从索引 1 开始,到索引 3(不包括 3)的所有元素都被替换成了字符串 'a'

在实际开发中,我们可以利用这个特性来对数组进行自定义部分替换。

生成固定长度数组

我们可以使用 new Array(length).fill(value) 的方式来生成一个固定长度的数组,例如:

这个语法的优点在于可以不用预设数组的元素类型,且可以更快速地生成数组。但是,需要注意的是,这种方法生成的数组中所有元素的值都是相等的,不适用于每个元素值不同的情况。

优化循环遍历

在一些情况下,我们可以利用 fill() 方法来优化循环遍历。例如:

使用 fill() 方法可以更加简便:

这种方法可以简化代码,且在复杂度上也更加优秀。

总结

Array.prototype.fill() 方法是 ES7 中 Array 原型对象上新增的方法之一,主要用于将数组中的元素替换为静态值。在实际开发中,我们可以利用该方法实现一些常用的操作,并且在一些情况下,fill() 方法也可以帮助我们优化代码。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/649b97c748841e989485adcb

纠错
反馈