在 ES6 中,Array.prototype.fill
被引入,它可以以一次性的方式填充数组中的所有元素。在 ES7 中,Array.prototype.copyWithin
被引入,它可以将元素从数组的一个位置复制到另一个位置。
虽然这两种方法都用于修改数组,但它们的功能和使用方式不同。
Array.prototype.fill 方法
Array.prototype.fill
方法接受两个参数:要填充的值和起始索引。
以下是一个简单的例子,演示如何使用 Array.prototype.fill
方法:
const arr = new Array(5).fill(0); console.log(arr); // [0, 0, 0, 0, 0]
在上面的示例中,new Array(5).fill(0)
创建了一个长度为 5 的数组,并用零值填充了所有元素。
Array.prototype.copyWithin 方法
Array.prototype.copyWithin
方法接受两个参数:目标位置和起始复制位置。它还接受一个可选参数:结束复制位置。
以下是一个简单的例子,演示如何使用 Array.prototype.copyWithin
方法:
const arr = [1, 2, 3, 4, 5]; arr.copyWithin(0, 3); console.log(arr); // [4, 5, 3, 4, 5]
上面的示例将从索引 3 开始的元素 [4, 5]
复制到索引 0 和 1 上,覆盖了最初的元素 [1, 2]
。
区别
虽然 Array.prototype.fill
和 Array.prototype.copyWithin
都用于修改数组,但它们的行为是不同的。以下是两种方法的区别:
Array.prototype.fill
填充数组所有元素的值,而Array.prototype.copyWithin
复制数组元素的值。Array.prototype.fill
只提供了一个起始索引,而Array.prototype.copyWithin
提供了两个索引,可以控制复制的位置和个数。
总结
Array.prototype.fill
和 Array.prototype.copyWithin
分别用于填充数组所有元素的值和复制数组元素的值。了解它们的区别可以使您在编写更清晰的代码时更好地利用它们。
提示:在使用这两种方法时,请仔细阅读它们的文档,以确保正确使用它们。
参考资料:
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6492653748841e98940310ec