splice() メソッドは、古い要素を取り除きつつ新しい要素を追加することで、配列の内容を(in place で)変更します。

構文

array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

引数

start
配列の変更する開始位置を示す 0 から始まるインデックスです。値が配列の長さより大きい場合、実際の値は配列の長さに設定されます。値が負数の場合、配列の終端からその値を引いた数が開始位置となり、その絶対値が配列の長さより大きい場合、0 に設定されます。
deleteCount Optional
配列から取り除く古い要素の数を示す整数です。
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);

// myFish は ["angel", "clown", "drum", "sturgeon"]
// removed は ["mandarin"]

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 3rd Edition (ECMA-262) 標準 初期定義です。JavaScript 1.2 で実装されました。
ECMAScript 5.1 (ECMA-262)
Array.prototype.splice の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
Array.prototype.splice の定義
標準  
ECMAScript Latest Draft (ECMA-262)
Array.prototype.splice の定義
ドラフト  

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
spliceChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり

凡例

完全対応  
完全対応

関連情報

  • push() / pop() - 配列末尾の要素の追加 / 削除
  • unshift() / shift() - 配列先頭の要素の追加 / 削除
  • concat() - 配列に他の配列や値をつないでできた新しい配列を返す

ドキュメントのタグと貢献者

最終更新者: mdnwebdocs-bot,