Array.prototype.splice()
splice()
メソッドは、その場で既存の要素を取り除いたり、置き換えたり、新しい要素を追加したりすることで、配列の内容を変更します。
試してみましょう
構文
splice(start)
splice(start, deleteCount)
splice(start, deleteCount, item1)
splice(start, deleteCount, item1, item2, itemN)
引数
start
-
配列を変更する先頭の位置です。
配列の長さより大きい場合、
start
は配列の長さに設定されます。 この場合、削除される要素はありませんが、このメソッドは追加関数として動作し、提供された項目の数だけ要素を追加します。値が負の数の場合は、配列の末尾から要素数だけ戻ったところから始まります。 (
-1
が原点で、-n
は最後の要素からn
番目であることを意味し、したがって位置がarray.length - n
であるのと同等です)。start
が-Infinity
であった場合は、0
の位置から始まります。 deleteCount
省略可-
配列の
start
の位置から取り除く古い要素の個数を示す整数です。deleteCount
引数が省略された場合、またはarray.length - start
以上 (つまり、start
から始めて配列に残っている要素の数以上) の場合、start
以降のすべての要素が取り除かれます。ただし、item1
引数が存在する場合は省略できません。deleteCount
が0
または負の数の場合、どの要素も取り除かれません。この場合、少なくとも 1 つの新しい要素を指定する必要があります (以下参照)。 item1
, …,itemN
省略可-
配列に追加する要素で、
start
から始まります。要素を指定しなかった場合、
splice()
は単に配列から要素を取り除きます。
返値
取り除かれた要素を含む配列です。
要素が 1 つだけ取り除かれた場合は、要素数 1 の配列が返されます。
要素が取り除かれなかった場合、空の配列が返されます。
解説
取り除こうとする要素数と異なる数の要素を挿入するように指定した場合、配列の length
は変更されます。
例
2 の位置の手前から 0 個の要素を削除して "drum" を挿入
const myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
const removed = myFish.splice(2, 0, 'drum');
// myFish は ["angel", "clown", "drum", "mandarin", "sturgeon"]
// removed は [] であり、どの要素も取り除かれていない
2 の位置の手前から 0 個の要素を削除して、"drum" と "guitar" を挿入
const myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
const removed = myFish.splice(2, 0, 'drum', 'guitar');
// myFish は ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]
// removed は [] であり、どの要素も取り除かれていない
3 の位置から 1 つ取り除く
const myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
const removed = myFish.splice(3, 1);
// removed は ["mandarin"]
// myFish は ["angel", "clown", "drum", "sturgeon"]
2 の位置から 1 つ取り除いて "trumpet" を挿入
const myFish = ['angel', 'clown', 'drum', 'sturgeon'];
const removed = myFish.splice(2, 1, 'trumpet');
// myFish は ["angel", "clown", "trumpet", "sturgeon"]
// removed は ["drum"]
0 の位置から 2 つ取り除き、そこへ "parrot" と "anemore" と "blue" を挿入
const myFish = ['angel', 'clown', 'trumpet', 'sturgeon'];
const removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');
// myFish は ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
// removed は ["angel", "clown"]
2 の位置から 2 つ取り除く
const myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon'];
const removed = myFish.splice(2, 2);
// myFish は ["parrot", "anemone", "sturgeon"]
// removed は ["blue", "trumpet"]
-2 の位置から 1 つ取り除く
const myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
const removed = myFish.splice(-2, 1);
// myFish は ["angel", "clown", "sturgeon"]
// removed は ["mandarin"]</pre>
2 の位置からすべての要素を取り除く
const myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
const removed = myFish.splice(2);
// myFish は ["angel", "clown"]
// removed は ["mandarin", "sturgeon"]
仕様書
Specification |
---|
ECMAScript Language Specification # sec-array.prototype.splice |
ブラウザーの互換性
BCD tables only load in the browser