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

JavaScriptで文字列から重複する単語のみを抽出する方法


文字列を引数として受け取り、元の文字列の中で2回以上出現した単語のみを含む新しい文字列を返すJavaScript関数を作成する必要があります。

入力文字列が以下の場合:

const str = 'this is a is this string that contains that some repeating words';

出力

期待される出力は次のとおりです:

const output = 'this is that';

この例では、「this」「is」「that」がそれぞれ複数回出現しているため、これらの単語だけが結果に残ります。

それでは、この関数のコードを書いてみましょう。

実装例

コードは以下のとおりです:

const str = 'this is a is this string that contains that some repeating words';
const keepDuplicateWords = str => {
   const strArr = str.split(" ");
   const res = [];
   for(let i = 0; i < strArr.length; i++){
      if(strArr.indexOf(strArr[i]) !== strArr.lastIndexOf(strArr[i])){
         if(!res.includes(strArr[i])){
            res.push(strArr[i]);
         };
      };
   };
   return res.join(" ");
};
console.log(keepDuplicateWords(str));

コードの解説

この関数の処理の流れは以下のとおりです。

1. split(" ")メソッドを使って文字列をスペースで分割し、単語の配列を作成します。

2. 各単語について、indexOf()lastIndexOf()の結果を比較します。両者が異なる場合、その単語は文字列内に複数回出現していることを意味します。

3. 重複している単語がまだ結果配列に含まれていない場合のみpush()で追加します。これにより、同じ単語が結果に重複して含まれるのを防ぎます。

4. 最後にjoin(" ")メソッドで配列をスペース区切りの文字列に戻して返します。

出力

コンソールへの出力は以下のとおりです。

this is that
  1. JavaScriptで文字列内の単語を逆順に並べ替える方法

    問題文(センテンス)を表す文字列を受け取り、その中に含まれる単語の順序を逆にして、新しい文字列として返すJavaScript関数を作成する必要があります。つまり、最後の単語が最初に、最後から2番目の単語が2番目に来るように、すべての単語の並びをひっくり返すということです。解決のアプローチこの問題は、標準的な配列メソッドを組み合わせるだけでシンプルに実装できます。手順は以下のとおりです。split( ) — 文字列をスペースで分割し、単語の配列を作成するreverse() — 配列の要素の順序を反転させるjoin( ) — 反転した配列をスペースで連結し、再び文字列に戻すコード例以下が実際のコー

  2. JavaScriptで文字列内の2つの単語の先頭文字を入れ替える方法

    問題 今回は、スペースで区切られた2つの単語からなる文字列を引数として受け取るJavaScript関数を作成します。 この関数の目的は、それぞれの単語の先頭文字(1文字目)を互いに入れ替えた新しい文字列を構築し、それを返すことです。 たとえば「hello world」という入力に対しては、先頭の「h」と「w」を交換して「wello horld」を出力する必要があります。 コード例 以下が実際のコードです。 const str = hello world; const interchangeChars = (str = ) => { const [first, second]