什么是 Array.prototype.fill 方法?
Array.prototype.fill
是 JavaScript 中一个数组方法,用于填充指定长度的数组,并返回新的数组。
在 ECMAScript 2018 标准化之前,我们只能通过使用 for 循环手动给数组填充内容,但是使用 Array.prototype.fill
方法可以更加简洁高效地完成这个任务。
fill
方法接受三个参数:
- value:用于填充数组的值。
- start:填充开始位置(数组下标),默认为 0。
- end:填充结束位置(数组下标),默认为数组长度。
使用示例
示例 1:用默认值填充数组
const a = new Array(5); a.fill(0); console.log(a); // [0, 0, 0, 0, 0]
这个示例中,我们创建了一个长度为 5 的数组 a
,然后使用 fill
方法将所有元素的值设置为 0。最终输出 [0, 0, 0, 0, 0]
。
示例 2:从指定位置开始填充数组
const a = new Array(5); a.fill(0, 2); // 从第 3 个元素开始填充 console.log(a); // [undefined, undefined, 0, 0, 0]
这个示例中,同样是创建了一个长度为 5 的数组 a
,但是我们使用了第二个参数 start
,指定了填充的起始位置为数组下标为 2 的元素。最终输出 [undefined, undefined, 0, 0, 0]
,前两个元素为 undefined,因为我们没有对它们进行填充。
示例 3:填充部分数组元素
const a = new Array(5); a.fill(0, 2, 4); // 从第 3 个元素到第 5 个元素(不包括第 5 个)填充 console.log(a); // [undefined, undefined, 0, 0, undefined]
这个示例中,我们使用了第二个和第三个参数 start
和 end
,指定了填充的起始和终止位置。填充范围是从数组下标为 2 的元素(第 3 个元素)到数组下标为 4 的元素(第 5 个元素),但是不包括右侧终止位置的元素。最终输出 [undefined, undefined, 0, 0, undefined]
。
示例 4:使用对象填充数组
const a = new Array(3); a.fill({ name: 'Tom', age: 20 }); console.log(a); // [{ name: 'Tom', age: 20 }, { name: 'Tom', age: 20 }, { name: 'Tom', age: 20 }]
这个示例中,我们使用了一个对象来填充数组,同样是创建了长度为 3 的数组 a
,并使用 fill
方法将所有元素都填充为同一个对象 { name: 'Tom', age: 20 }
。最终输出 [{ name: 'Tom', age: 20 }, { name: 'Tom', age: 20 }, { name: 'Tom', age: 20 }]
。
需要注意的是,由于 JavaScript 中的对象是引用类型,相同的对象会被多个变量共享,所以修改任何一个变量所指向的对象,都会影响另一个变量所指向的对象。如果希望填充的每个元素都独立,需要使用不同的对象或者进行深拷贝。
总结
Array.prototype.fill
方法用于填充指定长度的数组,并返回新的数组。fill
方法接受三个参数:value、start、end。- 没有传入参数时,默认将数组每个元素填充为 undefined。
- 使用
start
参数可以指定填充的起始位置。 - 使用
end
参数可以指定填充的终止位置。 - 如果填充值是对象,需要注意对象引用类型的特点。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64d3f419b5eee0b525b7b73e