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 July 2015.

set()TypedArray インスタンスのメソッドで、複数の値を指定した配列から入力値を読み込み、型付き配列に格納します。

試してみましょう

// Create an ArrayBuffer with a size in bytes
const buffer = new ArrayBuffer(8);
const uint8 = new Uint8Array(buffer);

// Copy the values into the array starting at index 3
uint8.set([1, 2, 3], 3);

console.log(uint8);
// Expected output: Uint8Array [0, 0, 0, 1, 2, 3, 0, 0]

構文

js
set(array)
set(array, targetOffset)

set(typedarray)
set(typedarray, targetOffset)

引数

array

値のコピーする配列です。コピー元の配列からのすべての値がコピー先の配列にコピーされます。ただし、コピー元の配列の長さにオフセットを加えた長さがコピー先の配列の長さを超えた場合は、例外が発生します。

typedarray

コピー元の配列が型付き配列の場合、2 つの配列は同じ ArrayBuffer を共有することができます。 JavaScript エンジンは、バッファーのコピー元の範囲をコピー先の範囲にインテリジェントに copy します。

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

ブラウザーの互換性

関連情報