JavaScriptの可変長引数(レスト構文)を使って配列から複数の要素を削除する方法
はじめに
JavaScriptでは、配列から特定の要素を削除したい場面はよくあります。本記事では、可変長引数(レストパラメータ)を活用して、元の配列から指定した文字列をすべて直接削除する関数の実装方法を解説します。
まず、次のような文字列リテラルの配列を用意します。
const arr = ['cat','dog','elephant','lion','tiger','mouse'];
ここで求められているのは、第一引数に対象の配列を受け取り、第二引数以降には削除したい文字列を任意の個数だけ渡せるJavaScript関数を作成することです。
そして、この関数は引数として渡された文字列が元の配列に存在する場合、その要素を元の配列から直接(in place)削除する必要があります。
実装コード
以下がそのコード例です。レスト構文「...removeArr」により、渡されたすべての引数がひとつの配列としてまとめられます。
const arr = ['cat','dog','elephant','lion','tiger','mouse'];
const removeFromArray = (arr, ...removeArr) => {
removeArr.forEach(item => {
const index = arr.indexOf(item);
if(index !== -1){
arr.splice(index, 1);
};
});
}
removeFromArray(arr, 'dog', 'lion');
console.log(arr);コードのポイント
- レストパラメータ(
...removeArr): 第二引数以降に渡された値を自動的に配列として受け取るため、削除したい要素はいくつでも指定できます。 - indexOf(): 各文字列が配列内のどの位置にあるかを検索します。見つからない場合は
-1が返されます。 - splice(index, 1): 見つかった位置の要素を1件だけ削除し、元の配列を直接変更します。
出力結果
コンソールには次のように出力されます。
[ 'cat', 'elephant', 'tiger', 'mouse' ]
このように、レスト構文と splice() を組み合わせることで、柔軟かつ簡潔に配列から複数の要素を削除することができます。なお、元の配列を変更せず新しい配列を作りたい場合は、filter() メソッドを使う方法も検討するとよいでしょう。
-
JavaScriptのカスタム関数で配列から重複要素をすべて削除する方法
概要 リテラル値の配列を受け取るJavaScript関数を作成する必要があります。ある要素が配列内に2回以上出現している場合、その要素のすべての出現箇所を配列から削除しなければなりません。 たとえば、入力配列が次のような場合—— const arr = [1,2,3,4,4,5,5]; 期待される出力は次のとおりです。 const output = [1, 2, 3]; このように、単に重複を1つ残すのではなく、重複している要素自体を配列から完全に取り除く点がポイントです。 実装例 以下のコードでは、指定した値を配列からすべて削除する補助関数 removeAll を用意し、各要素について in
-
C#でArrayListから要素を削除する方法をわかりやすく解説
C#でArrayListから要素を削除するには、Remove()メソッドを使用します。まずは新しいArrayListを宣言し、いくつかの要素を追加してみましょう。ArrayList arr = new ArrayList(); arr.Add(One); arr.Add(Two); arr.Add(Three); arr.Add(Four);ここで「Three」という要素を削除したい場合は、Remove()メソッドに削除したい値を渡すだけです。非常にシンプルですね。arr.Remove(Three);サンプルコード以下は、ArrayListから要素を削除する処理の一連の流れを確認できる完全なサ