JavaScriptのsplice()メソッドとは
splice()はJavaScriptの配列型のメソッドであり、以下のことができます。
- 既存の要素を削除する
- 配列の途中に新しい要素を挿入する
- 配列内の要素を置き換える
それぞれ具体的にコードを交えて解説します。
splice()で配列内の要素を削除する
配列の要素を削除する場合、splice()メソッドには次のように2つの引数を渡します。
配列.splice(スタート位置, 削除する要素数)
第1引数は削除する最初の項目の位置を指定し、第2引数は削除する要素の数となります。
splice()メソッドは、削除された要素で構成された配列を返します。この時、元の配列は変更されます。
具体的なコード例
例えば、以下のように5つの数値を含む配列があるとします。
let numbers = [10, 20, 30, 40, 50];
上記のnumbers配列において、最初の要素から2つ目までを削除するとしたら以下のように書きます。
let deletedNumbers = numbers.splice(0, 2)
console.log(numbers) // [30, 40, 50]
console.log(deletedNumbers) // [10, 20]
処理の結果としては、deletedNumbersには削除された要素で構成された配列が格納され、元の配列であるnumbersには3つの要素のみが残りました。
splice()で配列に要素を挿入する
splice()メソッドに3つ以上の引数を渡し、第2引数を0とすると、配列に要素を挿入することができます。
配列.splice(スタートの位置, 0 要素1, 要素2, ...)
- 第1引数は、新しい要素が挿入される配列の開始位置を指定する
- 第2引数は0で、配列の要素を削除しないようにsplice()メソッドに指示する
- 第3引数、第4引数…は、配列に挿入される新しい要素である
この方法だと、splice()メソッドは要素を削除しないので、処理結果の戻り値には空の配列が返されます。
具体的なコード例
namesという配列に3つの文字列があるとします。
配列のインデックス番号が2である位置に1つの要素を挿入する場合、以下のように書きます。
let names = ['田中', '斎藤', '木村'];
let responseArray = names.splice(2, 0, '松本');
console.log(names); // ['田中', '斎藤', '松本', '木村']
console.log(responseArray) // []
元のnames配列は4つの要素を持つようになり、splice()メソッドの戻り値には空の配列が返ってきます。
ちなみに、複数の要素を挿入したい場合は、次のように記述します。
let names = ['田中', '斎藤', '木村'];
let responseArray = names.splice(2, 0, '松本', '大島', '森本');
console.log(names); // ['田中', '斎藤', '松本', '大島', '森本', '木村']
console.log(responseArray) // []
splice()メソッドで配列内の要素を置き換える
splice()メソッドを使用すると、配列に新しい要素を挿入すると同時に、既存の要素を削除することができます。
具体的な方法としては、3つ以上の引数を渡し、2番目の引数で削除する要素数を指定し、3番目の引数で挿入する要素を指定します。
なお、削除する要素の数は、挿入する要素の数と同じである必要はありません。
具体的なコード例
例えば、3つのスポーツの名前が格納された配列があるとします。
2番目の要素(soccer)を swimming に置き換える場合、次のように書きます。
let sports = ['baseball', 'soccer', 'tennis'];
sports.splice(1, 1, 'swimming');
console.log(sports) // ['baseball', 'swimming', 'tennis']
複数の要素を置き換える場合は、以下のように記述します。
let sports = ['baseball', 'soccer', 'tennis'];
sports.splice(1, 2, 'swimming', 'basketball');
console.log(sports) // ['baseball', 'swimming', 'basketball']