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

【JavaScript】名前の頭文字(最初の1文字)ごとにグループ化する方法

はじめに

JavaScriptでは、配列内のデータを特定の条件で分類したい場面がよくあります。本記事では、名前が格納された配列を「頭文字(最初の1文字)」ごとにグループ化する方法を解説します。

たとえば、次のような名前の配列があるとします。

const arr = ["Simon", "Mike", "Jake", "Lara", "Susi", "Blake", "James"];

この配列を受け取り、以下の2つのプロパティを持つオブジェクトの配列を返す関数を作成する必要があります。

  • letter … グループ化の基準となる頭文字
  • names … その頭文字に該当する名前の配列

実装コード

この処理は、reduce()メソッドを使って頭文字をキーとしたマップを作成し、その後Object.keys()で整形するという流れで実現できます。コードは以下の通りです。

const arr = ["Simon", "Mike", "Jake", "Lara", "Susi", "Blake", "James"];

const groupNames = arr => {
    const map = arr.reduce((acc, val) => {
        let char = val.charAt(0).toUpperCase();
        acc[char] = [].concat((acc[char] || []), val);
        return acc;
    }, {});
    
    const res = Object.keys(map).map(el => ({
        letter: el,
        names: map[el]
    }));
    
    return res;
};

console.log(groupNames(arr));

コードのポイント

  • charAt(0).toUpperCase(): 各名前の最初の1文字を取得し、大文字に変換してグループ化のキーとしています。これにより、「Simon」と「susi」のように大文字・小文字が混在していても同じグループにまとめられます。
  • reduce(): 配列を走査しながら、頭文字をキー、名前の配列を値とするオブジェクト(マップ)を構築します。
  • Object.keys().map(): 完成したマップを、要件どおり { letter, names } の形式を持つオブジェクトの配列に変換しています。

出力結果

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

[
    { letter: 'S', names: [ 'Simon', 'Susi' ] },
    { letter: 'M', names: [ 'Mike' ] },
    { letter: 'J', names: [ 'Jake', 'James' ] },
    { letter: 'L', names: [ 'Lara' ] },
    { letter: 'B', names: [ 'Blake' ] }
]

このように、同じ頭文字を持つ名前がきれいにグループ化されていることが確認できます。reduce()を活用したこの手法は、名前以外にも商品名やタグなど、さまざまな文字列データの分類に応用できる汎用的なパターンですので、ぜひ覚えておきましょう。

  1. JavaScriptのグループ化演算子とは?優先順位の制御方法をサンプルコードで解説

    グループ化演算子とはJavaScriptのグループ化演算子は、丸括弧「()」で表され、式を評価する際の優先順位を制御するために使用されます。通常、演算子にはあらかじめ決められた優先順位があり、乗算(*)や除算(/)は加算(+)や減算(-)よりも先に評価されます。しかし、グループ化演算子で式を囲むことで、この優先順位を意図的に変更し、囲まれた部分を最優先で計算させることができます。例えば「2+2*5/22」という式の場合、標準の優先順位では乗算・除算が先に実行されますが、丸括弧を使うことで「(2+2)*5/22」のように加算を先に行わせることが可能です。サンプルコード以下は、JavaScript

  2. JavaScriptのファーストクラス関数とは?特徴と使い方を実例で解説

    ファーストクラス関数(第一級関数)とは? JavaScriptでは、関数もオブジェクトの一種として扱われます。そのため、関数を別の関数の引数(パラメータ)として渡したり、関数の中で別の関数を戻り値として返したりすることが可能です。 このような性質を持つことから、JavaScriptの関数はファーストクラス関数(第一級関数)と呼ばれています。つまり、関数は変数・オブジェクト・配列などに自由に格納できる「値」だということです。 さらに、関数を引数として受け取る、関数を戻り値として返す、あるいはその両方を行う関数は高階関数(Higher Order Function)と呼ばれます。 ファーストクラ