JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで配列からすべてのN番目の要素を削除する方法


今回は、配列と数値nを受け取り、配列内のn番目ごとの要素をその場で(in place)削除する関数「removeNth」を作成する方法を解説します。

この処理は、Array.prototype.splice()メソッドを使うことで簡単に実現できます。splice()は指定した位置の要素を削除できるメソッドで、filter()のように新しい配列を生成するのではなく、元の配列そのものを直接変更するのが特徴です。

実装例

以下のコードでは、forループでn番目ごとのインデックスにアクセスしながら、splice()で要素を1つずつ削除しています。ループの開始位置が「n - 1」となっているのは、JavaScriptの配列インデックスが0から始まるためです。

const arr = ['T','h','a','i','s','b',' ','i','c','s','\n','a','t','h','e','e',' ','t','s','o','r','n','g','t','\n','t','n','h','a','s','t',' ','o','n','e','o','v','e','a','r','\n','f','e','n','a','d','s','p',','];
const removeNth = (arr, n) => {
    for(let i = n-1; i < arr.length; i += n){
        arr.splice(i, 1);
    };
};
removeNth(arr, 2);
console.log(arr);

出力結果

コンソールには以下のように出力されます。

[
    'T', 'a', 'i', 'b', ' ', 'c',
    's', 'a', 't', 'e', 'e', 't',
    's', 'r', 'n', 't', ' ', 'n',
    'h', 's', 't', 'o', 'n', 'o',
    'v', 'a', 'r', 'f', 'e', 'a',
    'd', 'p', ','
]

コードのポイント

  • splice(i, 1) … インデックスiの位置から1個の要素を削除します。ここでは戻り値(削除された要素)は使わず、削除処理だけを行っています。
  • in placeでの削除 … map()やfilter()が新しい配列を返すのに対し、splice()は元の配列を直接書き換えます。
  • 注意点 … 要素を削除すると、それ以降の要素のインデックスは1つずつ前へずれます。splice()をループ内で使う場合は、このインデックスのずれを考慮してロジックを組み、実際の動作を確認しながら実装することが重要です。
  1. JavaScriptで要素からクラス名を削除する方法【classList.remove()の使い方】

    JavaScriptでHTML要素からクラス名(className)を削除するには、classList.remove()メソッドを使うのが最もシンプルで確実な方法です。このメソッドを使えば、対象の要素から指定したクラスを動的に取り除くことができ、ボタンのクリックなどユーザーの操作に応じてスタイルを切り替える際に非常に便利です。 サンプルコード 以下は、「Remove Class」ボタンをクリックすると、DIV要素からクラス名が削除される例です。 <!DOCTYPE html> <html> <head> <meta name="viewpor

  2. Swiftの配列から特定の要素を削除する方法を徹底解説

    Swiftで配列から特定の要素を削除したい場合、いくつかの方法があります。この記事では、実際のコード例を交えながら、代表的な2つの方法をわかりやすく解説します。 まずは、String型の配列を用意しましょう。 var arrayOfString = [a,b,c,f] この配列を使って、以下の2つの方法で特定の要素を削除していきます。 方法1:filterメソッドを使う Swiftの配列にはfilterメソッドが標準で用意されています。これは、指定した条件に基づいて要素を絞り込み、新しい配列として返すメソッドです。削除したい要素を条件から除外することで、実質的にその要素を取り除くことができます