このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

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 を返し、その内容はこの ArrayBufferstart から 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 が使用され、最後まですべての要素が抽出されます。
  • endstart が示す位置よりも前またはその位置を示す場合、空の配列が返されます。

返値

抽出した要素が入った新しい ArrayBuffer です。元がリサイズ可能であってもリサイズ可能ではありません。

ArrayBuffer のコピー

js
const buf1 = new ArrayBuffer(8);
const buf2 = buf1.slice(0);

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-arraybuffer.prototype.slice

ブラウザーの互換性

関連情報