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 元素。
- 可以使用负数值来代表从数组的末尾开始计算的填充位置。
start
和end
参数都是可选的,但是如果只传了start
参数,那么fill()
方法会以start
作为起始位置,end
默认为arr.length
。如果两个参数都没有传递,那么数组所有元素都将被替换成value
。
深入理解
虽然 fill()
方法看起来很简单,但是在实际开发中,我们需要深入理解该方法的内部机制,从而更好地使用这个方法。
替换所有元素
实际上,我们可以通过以下方式,使用 fill()
方法来替换数组中的所有元素:
const arr = [1, 2, 3, 4, 5]; arr.fill('a');
这样,数组 arr
中的所有元素都被替换成了字符串 'a'
。
替换部分元素
如果我们只想替换数组中的一部分元素,可以使用如下语法:
const arr = [1, 2, 3, 4, 5]; arr.fill('a', 1, 3);
这样,数组 arr
从索引 1 开始,到索引 3(不包括 3)的所有元素都被替换成了字符串 'a'
。
在实际开发中,我们可以利用这个特性来对数组进行自定义部分替换。
生成固定长度数组
我们可以使用 new Array(length).fill(value)
的方式来生成一个固定长度的数组,例如:
const arr = new Array(5).fill(0);
这个语法的优点在于可以不用预设数组的元素类型,且可以更快速地生成数组。但是,需要注意的是,这种方法生成的数组中所有元素的值都是相等的,不适用于每个元素值不同的情况。
优化循环遍历
在一些情况下,我们可以利用 fill()
方法来优化循环遍历。例如:
const arr = []; for (let i = 0; i < 1000; i++) { arr.push(0); }
使用 fill()
方法可以更加简便:
const arr = new Array(1000).fill(0);
这种方法可以简化代码,且在复杂度上也更加优秀。
总结
Array.prototype.fill()
方法是 ES7 中 Array 原型对象上新增的方法之一,主要用于将数组中的元素替换为静态值。在实际开发中,我们可以利用该方法实现一些常用的操作,并且在一些情况下,fill()
方法也可以帮助我们优化代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/649b97c748841e989485adcb