Array.prototype.fill()
fill()
方法是 Array
实例的方法,用于将数组中指定索引范围内的所有元素更改为一个静态值。它返回修改后的数组。
试试看
语法
js
fill(value)
fill(value, start)
fill(value, start, end)
参数
值
-
用于填充数组的值。请注意,数组中的所有元素都将是此确切的值:如果
value
是一个对象,则数组中的每个槽位都将引用该对象。 start
可选-
开始填充的基于零的索引,转换为整数。
- 负索引从数组末尾开始倒数 - 如果
-array.length <= start < 0
,则使用start + array.length
。 - 如果
start < -array.length
或省略start
,则使用0
。 - 如果
start >= array.length
,则不填充任何索引。
- 负索引从数组末尾开始倒数 - 如果
end
可选-
结束填充的基于零的索引,转换为整数。
fill()
填充直到但不包括end
。- 负索引从数组末尾开始倒数 - 如果
-array.length <= end < 0
,则使用end + array.length
。 - 如果
end < -array.length
,则使用0
。 - 如果
end >= array.length
或省略end
,则使用array.length
,导致所有直到末尾的索引都被填充。 - 如果
end
暗示的位置在start
暗示的位置之前或与之相同,则不填充任何内容。
- 负索引从数组末尾开始倒数 - 如果
返回值
已修改的数组,填充了value
。
描述
示例
使用 fill()
js
console.log([1, 2, 3].fill(4)); // [4, 4, 4]
console.log([1, 2, 3].fill(4, 1)); // [1, 4, 4]
console.log([1, 2, 3].fill(4, 1, 2)); // [1, 4, 3]
console.log([1, 2, 3].fill(4, 1, 1)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, 3, 3)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, -3, -2)); // [4, 2, 3]
console.log([1, 2, 3].fill(4, NaN, NaN)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, 3, 5)); // [1, 2, 3]
console.log(Array(3).fill(4)); // [4, 4, 4]
// A single object, referenced by each slot of the array:
const arr = Array(3).fill({}); // [{}, {}, {}]
arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]
使用 fill() 创建一个全为 1 的矩阵
此示例演示如何创建一个全为 1 的矩阵,类似于 Octave 或 MATLAB 的ones()
函数。
js
const arr = new Array(3);
for (let i = 0; i < arr.length; i++) {
arr[i] = new Array(4).fill(1); // Creating an array of size 4 and filled of 1
}
arr[0][0] = 10;
console.log(arr[0][0]); // 10
console.log(arr[1][0]); // 1
console.log(arr[2][0]); // 1
使用 fill() 填充空数组
此示例演示如何填充数组,将所有元素设置为特定值。不需要指定end
参数。
js
const tempGirls = Array(5).fill("girl", 0);
请注意,该数组最初是一个稀疏数组,没有分配索引。fill()
仍然能够填充此数组。
在非数组对象上调用 fill()
fill()
方法读取this
的length
属性,并将从start
到end
的每个整数键属性的值设置为指定值。
js
const arrayLike = { length: 2 };
console.log(Array.prototype.fill.call(arrayLike, 1));
// { '0': 1, '1': 1, length: 2 }
规范
规范 |
---|
ECMAScript 语言规范 # sec-array.prototype.fill |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。