Array.prototype.with()
语法
js
arrayInstance.with(index, value)
参数
索引
-
要更改数组的基于零的索引,转换为整数。
- 负索引从数组末尾算起 - 如果
-array.length <= index < 0
,则使用index + array.length
。 - 如果规范化后的索引超出范围,则会抛出
RangeError
。
- 负索引从数组末尾算起 - 如果
价值
-
要分配给给定索引的任何值。
返回值
一个新的数组,其中index
处的元素被替换为value
。
例外
RangeError
-
如果
index >= array.length
或index < -array.length
,则抛出。
描述
示例
创建一个包含单个元素更改的新数组
js
const arr = [1, 2, 3, 4, 5];
console.log(arr.with(2, 6)); // [1, 2, 6, 4, 5]
console.log(arr); // [1, 2, 3, 4, 5]
链接数组方法
使用with()
方法,您可以更新数组中的单个元素,然后应用其他数组方法。
js
const arr = [1, 2, 3, 4, 5];
console.log(arr.with(2, 6).map((x) => x ** 2)); // [1, 4, 36, 16, 25]
对稀疏数组使用 with()
该with()
方法始终创建一个密集数组。
js
const arr = [1, , 3, 4, , 6];
console.log(arr.with(0, 2)); // [2, undefined, 3, 4, undefined, 6]
在非数组对象上调用 with()
该with()
方法创建并返回一个新数组。它读取this
的length
属性,然后访问每个键为非负整数且小于length
的属性。访问this
的每个属性时,索引等于属性键的数组元素将设置为属性的值。最后,数组index
处的值将设置为value
。
js
const arrayLike = {
length: 3,
unrelated: "foo",
0: 5,
2: 4,
3: 3, // ignored by with() since length is 3
};
console.log(Array.prototype.with.call(arrayLike, 0, 1));
// [ 1, undefined, 4 ]
规范
规范 |
---|
ECMAScript 语言规范 # sec-array.prototype.with |
浏览器兼容性
BCD 表仅在浏览器中加载