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> |