splice()
メソッドは、 (in place で) 既存の要素を取り除いたり、置き換えたり、新しい要素を追加したりすることで、配列の内容を変更します。
このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 https://github.com/mdn/interactive-examples をクローンしてプルリクエストを送信してください。
構文
var arrDeletedItems = array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
引数
start
- 配列を変更する開始位置を表すインデックスです。値が配列の長さより大きい場合は、
start
は配列の長さに設定されます。値が負数の場合は、配列の末尾から要素数を戻ったところから始まります (-1 が原点で、 -n は最後の要素から n 番目であることを意味し、したがってインデックスがarray.length - n
であるのと同等です)。start
の絶対値が配列の長さよりも大きい場合は、インデックス 0 から始まります。 deleteCount
Optional- 配列の
start
から取り除く古い要素の数を示す整数です。 deleteCount
引数が省略された場合、またはarray.length - start
以上 (つまり、start
から始まり、配列に残る要素の数以上の場合) の場合、start
以降のすべての要素が取り除かれます。deleteCount
が 0 か負数の場合、どの要素も取り除かれません。この場合、少なくとも 1 つの新しい要素を指定する必要があります。item1, item2, ...
Optional- 配列に追加する要素です。要素を指定しなかった場合、
splice()
は単に配列から要素を取り除きます。
返値
取り除かれた要素を含む配列です。要素が 1 つのみ削除された場合は、要素数 1 の配列が返されます。要素が削除されなかった場合、空の配列が返されます。
解説
取り除こうとする要素数と異なる数の要素を挿入するように指定した場合、関数呼び出しが終わったとき配列は初めと異なる長さになります。
例
index 2 の位置 (3番目の要素の前) から 0 個の要素を削除して "drum" を挿入する
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; var removed = myFish.splice(2, 0, 'drum'); // myFish は ["angel", "clown", "drum", "mandarin", "sturgeon"] // removed は [], どの要素も取り除かれていない (空配列)
index 2 の位置 (3 番目の要素の前) から 0 個の要素を削除して、"drum" と "guitar" を挿入する
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; var removed = myFish.splice(2, 0, 'drum', 'guitar'); // myFish is ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"] // removed is [], no elements removed
index 3 の位置 (4番目の要素) から一つ取り除く
var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon']; var removed = myFish.splice(3, 1); // removed は ["mandarin"] // myFish は ["angel", "clown", "drum", "sturgeon"]
index 2 の位置 (3 番目の要素) から 1 つ取り除いて "trumpet" を挿入する
var myFish = ['angel', 'clown', 'drum', 'sturgeon']; var removed = myFish.splice(2, 1, 'trumpet'); // myFish は ["angel", "clown", "trumpet", "sturgeon"] // removed は ["drum"]
index 0 の位置 (先頭の要素) から二つ取り除き、そこへ "parrot" と "anemore" と "blue" を挿入する
var myFish = ['angel', 'clown', 'trumpet', 'sturgeon']; var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue'); // myFish は ["parrot", "anemone", "blue", "trumpet", "sturgeon"] // removed は ["angel", "clown"]
配列長 - 3 の位置 (後ろから 3番目) から 2 つ取り除く
var myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon']; var removed = myFish.splice(myFish.length - 3, 2); // myFish は ["parrot", "anemone", "sturgeon"] // removed は ["blue", "trumpet"]
index -2 の位置 (後ろから 2番目) から 1 つ取り除く
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; var removed = myFish.splice(-2, 1); // myFish は ["angel", "clown", "sturgeon"] // removed は ["mandarin"]
index 2 の位置 (3番目の要素) から末端までを取り除く
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; var removed = myFish.splice(2); // myFish は ["angel", "clown"] // removed は ["mandarin", "sturgeon"]
仕様書
仕様書 | 状態 | 備考 |
---|---|---|
ECMAScript Latest Draft (ECMA-262) Array.prototype.splice の定義 |
ドラフト | |
ECMAScript 2015 (6th Edition, ECMA-262) Array.prototype.splice の定義 |
標準 | |
ECMAScript 5.1 (ECMA-262) Array.prototype.splice の定義 |
標準 | |
ECMAScript 3rd Edition (ECMA-262) | 標準 | 初回定義。 JavaScript 1.2 で実装。 |
ブラウザーの互換性
このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 https://github.com/mdn/browser-compat-data をチェックアウトしてプルリクエストを送信してください。
Update compatibility data on GitHub
デスクトップ | モバイル | サーバー | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
splice | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE
完全対応
5.5
| Opera 完全対応 あり | Safari 完全対応 あり | WebView Android 完全対応 あり | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 あり | Safari iOS 完全対応 あり | Samsung Internet Android 完全対応 あり | nodejs 完全対応 あり |
凡例
- 完全対応
- 完全対応
- 実装ノートを参照してください。
- 実装ノートを参照してください。