ArrayBuffer.prototype.slice()
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月.
slice() は ArrayBuffer インスタンスのメソッドで、新しい ArrayBuffer を返し、その内容はこの ArrayBuffer の start から end の手前までをコピーします。start または end のいずれかが負の場合、配列の先頭からではなく、末尾からのインデックスを指します。
試してみましょう
// ArrayBuffer をバイト単位のサイズで作成
const buffer = new ArrayBuffer(16);
const int32View = new Int32Array(buffer);
// Int32Array [0, 0, 0, 0] を作成
int32View[1] = 42;
const sliced = new Int32Array(buffer.slice(4, 12));
// Int32Array [42, 0] を作成
console.log(sliced[0]);
// 予想される結果: 42
構文
js
slice()
slice(start)
slice(start, end)
引数
start省略可-
抽出を始める位置のゼロから始まるインデックスで、整数に変換されます。
- インデックスが負の場合、配列の末尾からさかのぼって数えます。
-buffer.length <= start < 0の場合、start + buffer.lengthが使用されます。 start < -buffer.lengthまたはstartが省略された場合は0が使用されます。start >= buffer.lengthの場合、空の配列が返されます。
- インデックスが負の場合、配列の末尾からさかのぼって数えます。
end省略可-
抽出し終える位置のゼロから始まるインデックスで、整数に変換されます。
slice()はendを含まず、その直前までを抽出します。- インデックスが負の場合、配列の末尾からさかのぼって数えます。
-buffer.length <= end < 0の場合、end + buffer.lengthが使用されます。 end < -buffer.lengthの場合は0が使用されます。end >= buffer.lengthまたはendが省略された場合はbuffer.lengthが使用され、最後まですべての要素が抽出されます。endがstartが示す位置よりも前またはその位置を示す場合、空の配列が返されます。
- インデックスが負の場合、配列の末尾からさかのぼって数えます。
返値
抽出した要素が入った新しい ArrayBuffer です。元がリサイズ可能であってもリサイズ可能ではありません。
例
ArrayBuffer のコピー
js
const buf1 = new ArrayBuffer(8);
const buf2 = buf1.slice(0);
仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification # sec-arraybuffer.prototype.slice |