TypedArray.prototype.set()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
TypedArray 实例的 set() 方法用于将多个值存入类型化数组中,这些值会从指定的数组中读取。
尝试一下
// 创建一个以字节为单位指定大小的 ArrayBuffer
const buffer = new ArrayBuffer(8);
const uint8 = new Uint8Array(buffer);
// 从索引 3 开始将这些值复制到数组中
uint8.set([1, 2, 3], 3);
console.log(uint8);
// 预期输出:Uint8Array [0, 0, 0, 1, 2, 3, 0, 0]
语法
js
set(array)
set(array, targetOffset)
set(typedarray)
set(typedarray, targetOffset)
参数
array-
要复制其值的源数组。源数组中的所有值都会被复制到目标数组中,除非源数组的长度加上目标偏移量超过目标数组的长度,在这种情况下会抛出异常。
typedarray-
如果源数组是类型化数组,这两个数组可能共享同一个底层
ArrayBuffer;此时 JavaScript 引擎会智能地将缓冲区中源范围的数据复制到目标范围。 targetOffset可选-
指定在目标数组中开始写入源数组值的偏移位置。如果省略此参数,则默认为 0(即源数组将从索引 0 开始覆盖目标数组中的值)。
返回值
无(undefined)。
异常
RangeError-
在以下情况之一中会抛出该错误:
- 由于
targetOffset过大,array或者typedarray的长度过长,导致元素将被存储到类型化数组的末尾之外。 targetOffset为负数。
- 由于
示例
>使用 set()
js
const buffer = new ArrayBuffer(8);
const uint8 = new Uint8Array(buffer);
uint8.set([1, 2, 3], 3);
console.log(uint8); // Uint8Array [ 0, 0, 0, 1, 2, 3, 0, 0 ]
规范
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-%typedarray%.prototype.set> |
浏览器兼容性
Loading…