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

View in English Always switch to English

ArrayBuffer.prototype.slice()

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。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);

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-arraybuffer.prototype.slice

ブラウザーの互換性

関連情報