ES7 引入了一个新的数组方法 Array.prototype.fill
,可以用给定的值填充一个数组。本文将详细介绍它的用法和特性,以及一些示例代码和应用场景。
语法
arr.fill(value[, start[, end]])
参数
value
:必填,用来填充数组的值。start
:可选,开始填充的索引位置,默认为 0。end
:可选,结束填充的索引位置,默认为数组长度。
返回值
填充后的数组。
示例代码
下面是一些示例代码:
-- -------------------- ---- ------- --- --- - --- ----------------- ----------------- -- --- -- -- -- -- --- --- - --- -- -- -- --- ----------- -- --- ----------------- -- --- -- -- -- -- --- --- - --- ------------------ --------------- ----------------- -- ----- ---- ----
第一个示例创建一个长度为 5 的数组,并用 0 填充每个位置。
第二个示例从索引 2 到 4 的位置填充 0。
第三个示例创建一个长度为 3 的数组,并用空数组填充每个位置,然后对第一个位置的空数组进行修改,导致每个位置都被修改成了 [1]。
深入了解 fill 方法
填充引用类型的值
需要注意的是,如果要填充的值是一个对象或数组等引用类型,那么填充后的数组中每个位置都将指向同一个引用。这意味着填充后的数组中的每个位置所包含的值都是相等的,并且修改其中一个位置的值也会影响其他位置。如上面的第三个示例所示。
使用 fill 方法生成固定值数组
fill 方法可以非常方便地生成一个指定值的数组。
例如:
let arr = Array.from({ length: 5 }, () => 0); console.log(arr); // [0, 0, 0, 0, 0]
上面的代码使用 Array.from 方法结合 fill 方法生成一个长度为 5,每个位置都为 0 的数组。
使用 fill 方法处理数组拷贝
fill 方法可以与数组的拷贝方法(如slice)结合使用,从而对数组进行拷贝和填充。
例如:
let arr = [1, 2, 3]; let newArr = arr.slice().fill(0, 1, 2); console.log(newArr); // [1, 0, 3] console.log(arr); // [1, 2, 3]
上面的代码首先对 arr 数组进行拷贝,然后将拷贝的数组从索引 1 到 2 的位置填充为 0,生成并返回新的数组。
总结
ES7 的 Array.prototype.fill
方法可以帮助我们非常方便地进行数组填充,特别是用来生成固定值数组非常有用。但需要注意如果填充的值是引用类型,会导致填充后的数组每个位置都指向同一个引用,需要注意修改位置值对其他位置的影响。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ec2a13f6b2d6eab3670c65