slice() メソッドは、型付き配列の一部の浅いコピーを新しい型付き配列に入れて返します。このメソッドは Array.prototype.slice() と同じアルゴリズムを持ちます。 TypedArray は、ここでは型付き配列型の一つです。
このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 https://github.com/mdn/interactive-examples をクローンしてプルリクエストを送信してください。
構文
typedarray.slice([begin[, end]])
引数
beginOptional- 抽出範囲の先頭の位置を示す 0 から始まる添字です。
- 負の添字を使って、配列の末尾からの相対位置を表すことができます。
slice(-2)は配列の最後から 2 番目の要素と最後の要素を抽出します。 beginを省略した場合、sliceは0番目の要素から開始します。endOptional- 抽出範囲の末尾の直前の位置を示す 0 から始まる添字です。
sliceはend自体は含めず、その直前まで抽出します。 slice(1,4)は 2 番目の要素から 4 番目の要素まで (添字が 1, 2, 3 の要素) を取り出します。- 負の添字を使って、配列の末尾からの相対位置を表すことができます。
slice(2,-1)は配列の 3 番目の要素から、最後から 2 番目の要素まで取り出します。 endが省略された場合、sliceは配列の最後 (typedarray.length) まで取り出します。
返値
抽出された要素が入った新しい型付き配列。
解説
slice メソッドは元の配列を変更しません。元の配列から取り出された要素のコピーを含む浅いコピーを返します。
一方の型付き配列に新しい要素が追加されても、他方の型付き配列に影響はしません。
ポリフィル
TypedArray という名前のグローバルオブジェクトがないため、ポリフィルは「必要に応じて」の原則で行う必要があります。
if (!Uint8Array.prototype.slice) {
Object.defineProperty(Uint8Array.prototype, 'slice', {
value: function (begin, end)
{
return new Uint8Array(Array.prototype.slice.call(this, begin, end));
}
});
}
Object.defineProperty に対応していない本当に古い JavaScript エンジンに対応する必要がある場合は、列挙可能ではないので Array.prototype メソッドのポリフィルを使用しないようにする必要があります。
例
例: 既存の配列の一部を返す
var 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 ]
仕様書
| 仕様書 |
|---|
| ECMAScript (ECMA-262) %TypedArray%.prototype.slice の定義 |
ブラウザーの互換性
このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 https://github.com/mdn/browser-compat-data をチェックアウトしてプルリクエストを送信してください。
Update compatibility data on GitHub
| デスクトップ | モバイル | サーバー | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
slice | Chrome 完全対応 45 | Edge 完全対応 14 | Firefox 完全対応 38 | IE 未対応 なし | Opera 完全対応 32 | Safari 完全対応 10 | WebView Android 完全対応 45 | Chrome Android 完全対応 45 | Firefox Android 完全対応 38 | Opera Android 完全対応 32 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 4.0.0 |
凡例
- 完全対応
- 完全対応
- 未対応
- 未対応