TypedArray.prototype.slice()

slice() メソッドは、元の型付き配列の部分的なコピーを含む新しい型付き配列(新しいバッファーによる)を返します。このメソッドは Array.prototype.slice() と同じアルゴリズムを持ちます。 TypedArray は、ここでは型付き配列型の一つです。

試してみましょう

構文

slice()
slice(start)
slice(start, end)

引数

start 省略可

抽出範囲の先頭の位置を示す 0 から始まる添字です。

負の添字を使って、配列の末尾からの相対位置を表すことができます。 slice(-2) は配列の最後から 2 番目の要素と最後の要素を抽出します。

start を省略した場合、 slice0 番目の要素から開始します。

end 省略可

抽出範囲の末尾の 直前 の位置を示す 0 から始まる添字です。 sliceend 自体は含めず、その直前まで抽出します。

slice(1,4) は 2 番目の要素から 4 番目の要素まで(添字が 1, 2, 3 の要素)を取り出します。

負の添字を使って、配列の末尾からの相対位置を表すことができます。 slice(2,-1) は配列の 3 番目の要素から、最後から 2 番目の要素まで取り出します。

end が省略された場合、 slice は配列の最後 (typedarray.length) まで取り出します。

返値

抽出された要素が入った新しい型付き配列。

解説

slice メソッドは元の型付き配列を変更せず、代わりに元の型付き配列の一部のコピーを返します。型付き配列はプリミティブ値しか格納しないので、slice メソッドが返すコピーは常にディープコピー である。

一方の型付き配列に新しい要素が追加されても、他方の型付き配列に影響はしません。

例: 既存の配列の一部を返す

const uint8 = new Uint8Array([1, 2, 3]);
uint8.slice(1); // Uint8Array [ 2, 3 ]
uint8.slice(2); // Uint8Array [ 3 ]
uint8.slice(-2); // Uint8Array [ 2, 3 ]
uint8.slice(0, 1); // Uint8Array [ 1 ]

仕様書

Specification
ECMAScript Language Specification
# sec-%typedarray%.prototype.slice

ブラウザーの互換性

BCD tables only load in the browser

関連情報