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

JavaScriptで文字列から重複していない文字を削除する方法

この記事では、JavaScriptを使って、文字列に含まれる重複していない文字(1回しか出現しない文字)をすべて削除し、重複している文字だけを残した新しい文字列を返す関数の作り方を解説します。

要件と出力例

たとえば、入力文字列が次のような場合を考えてみましょう。

"teeth_foot"

このとき、期待される出力は以下のとおりです。

"teetoot"

「t」「e」「o」はそれぞれ2回以上出現しているためそのまま残り、1回しか出現していない「h」「_」「f」は削除されます。

実装コード

それでは、実際のコードを見てみましょう。

const str = 'teeth_foot';
const removeNonDuplicate = str => {
    const strArray = str.split("");
    const duplicateArray = strArray.filter(el => {
        return strArray.indexOf(el) !== strArray.lastIndexOf(el);
    });
    return duplicateArray.join("");
};
console.log(removeNonDuplicate(str));

コードの仕組み

この関数の処理の流れは以下の3ステップです。

  1. split("") で文字列を1文字ずつ要素とする配列に分解します。
  2. filter() の中で indexOf()lastIndexOf() を比較します。ある文字の出現位置が先頭から見ても末尾から見ても同じ場合、その文字は1回しか出現していません。逆に両者が異なる場合は複数回出現しているため、その文字だけが残ります。
  3. join("") で配列を再び1つの文字列に結合して返します。

実行結果

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

teetoot

このアプローチはシンプルで読みやすく、短めの文字列に対しては十分なパフォーマンスを発揮します。より長い文字列を扱う場合は、Map やオブジェクトで各文字の出現回数を事前にカウントしておくことで、計算量を O(n) に抑える最適化も可能です。

  1. PHPで文字列から英数字以外の文字を削除する方法(preg_replaceの使い方)

    PHPでは、正規表現を活用することで、文字列から英数字(アルファベットと数字)以外の不要な記号や特殊文字を簡単に取り除くことができます。ここでは、「preg_replace」関数を使った具体的な方法を2つのサンプルコードで解説します。例1:文字クラスを使った正規表現で削除する<?php$my_str="Thisis!@sample*on&ly)#$";$my_str = preg_replace( '/[^a-z0-9]/i', '', $my_str);echo "The non-alphanumeric chara

  2. C#で文字列から重複文字を削除する方法:HashSetの活用例

    C#で文字列から重複した文字を取り除きたい場合、HashSet<char> を使うのが最もシンプルで効率的な方法の一つです。HashSetは重複する要素を自動的に排除して格納するコレクションのため、文字列をそのまま渡すだけで一意な文字だけを抽出できます。 HashSetによる重複削除の基本 まず、処理対象となる文字列を用意します。以下は同じ文字が連続して含まれるサンプル文字列です。 string myStr = "kkllmmnnoo"; 次に、この文字列をそのまま HashSet<char> のコンストラクタに渡します。HashSetは各文字を1つ