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

JavaScriptで最初の文字に基づいて重複する要素を削除する方法

問題の概要

文字列の配列を受け取り、同じ頭文字で始まる文字列が2つ存在する場合に、そのうち1つを削除するJavaScript関数を作成する必要があります。

例えば、元の配列が以下のとおりだとします。

const arr = ['Apple', 'Jack', 'Army', 'Car', 'Jason'];

この場合、配列には各頭文字の文字列を1つだけ残すため、「A」で始まる2つの文字列のうち1つを削除します。同様に、上記の配列では「J」で始まる文字列にも同じロジックが適用されます。

実装コード

この関数のコードは以下のとおりです −

const arr = ['Apple', 'Jack', 'Army', 'Car', 'Jason'];
const deleteSameLetterWord = arr => {
   const map = new Map();
   arr.forEach((el, ind) => {
      if(map.has(el[0])){
         arr.splice(ind, 1);
      }else{
         map.set(el[0], true);
      };
   });
};
deleteSameLetterWord(arr);
console.log(arr);

出力結果

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

[ 'Apple', 'Jack', 'Car' ]

コードの解説

この関数では、Mapオブジェクトを使用して、すでに出現した頭文字を記録しています。配列を1要素ずつ走査しながら、各要素の最初の文字がMapに登録済みかどうかを確認します。

  • すでに登録されている場合は、その要素をsplice()メソッドで配列から削除します。
  • 未登録の場合は、その頭文字をMapに新しく登録します。

この処理により、各頭文字を持つ最初の文字列だけが配列に残り、2つ目以降の重複がすべて削除されます。その結果、「Apple」「Jack」「Car」の3つの要素が最終的な配列として出力されます。

  1. JavaScriptで複数の文字列に共通する文字を重複込みで抽出する方法

    問題文字列の配列 arr を第一引数(かつ唯一の引数)として受け取るJavaScript関数を作成することを考えます。この関数の役割は、配列内のすべての文字列に出現する文字を抽出し、それらを配列として返すことです。重複も含めて扱う必要がある点に注意してください。たとえば、ある文字がすべての文字列の中で2回ずつ出現している場合(3回ではない場合)、最終的な結果にもその文字を2回だけ含めます。入力と出力の例たとえば、関数への入力が次のような場合を考えてみましょう。const arr = [door, floor, crook];r は3つの文字列すべてに1回ずつ現れ、o は door に2回、fl

  2. JavaScriptで配列を出現頻度の昇順に並べ替える方法

    問題数値の配列 arr を唯一の引数として受け取るJavaScript関数を作成する必要があります。配列 arr には重複した要素が含まれている可能性があります。この関数では、出現回数が少ない要素から順に配列を並べ替えます。つまり、出現頻度の低い要素を先頭に配置し、頻度の昇順に沿って残りの要素を並べていきます。なお、出現回数が同じ要素が複数存在する場合は、それらを値の昇順(小さい順)に配置する必要があります。入力例const arr = [5, 4, 5, 4, 2, 1, 12];出力例[1, 2, 12, 4, 4, 5, 5]出力の解説数値「1」「2」「12」はそれぞれ1回しか出現しない