You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Array.prototype.fill()未返回预期修改后的数组?

为什么Array.fill()没有按预期修改数组长度?

问题的核心在于**Array.prototype.fill()不会改变数组的长度**,它仅负责修改数组中已存在的索引范围内的元素。

看你的代码:

const array = ["apple"];
const paddedArray = array.fill("pear", 1, 3);
console.log(paddedArray.length);

原数组array的长度是1,仅包含索引0的元素。你传入的start参数是1、end是3,但这两个索引在原数组里根本不存在,fill()不会为了填充这些位置去扩展数组的长度,所以原数组长度保持1不变,paddedArray作为原数组的引用,输出长度自然是1。

再看TypeScript定义里的描述:“Changes all array elements from start to end index to a static value and returns the modified array”——这里的“array elements”指的是数组中已经存在的元素,如果start大于等于数组当前长度,fill()不会执行任何修改操作。

如果想要实现“填充并扩展数组长度”的效果,可以先手动设置数组长度再调用fill():

const array = ["apple"];
array.length = 3;
const paddedArray = array.fill("pear", 1, 3);
console.log(paddedArray.length); // 输出3

或者用padEnd()方法更直接:

const paddedArray = ["apple"].padEnd(3, "pear");
console.log(paddedArray.length); // 输出3

内容的提问来源于stack exchange,提问作者mikemaccana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:54:56