モダンJavaScript入門: 配列内で最も頻繁に出現する要素を見つける方法・応用例

目次

  1. はじめに
  2. 要素の頻度を数える方法
  3. 最頻出の要素を見つけるアルゴリズム
  4. コード例
  5. 応用例

はじめに

JavaScriptにおいて、配列内で最も頻繁に出現する要素を見つけることは一般的な課題です。この記事では、そのような問題を解決するための方法と応用例について説明します。

要素の頻度を数える方法

配列内の各要素の出現回数を数えるために、reduce() メソッドを使ったシンプルなアプローチがあります。このメソッドは、要素を数える際に便利です。

function countOccurrences(arr) {
  return arr.reduce((acc, curr) => {
    acc[curr] ? acc[curr]++ : (acc[curr] = 1);
    return acc;
  }, {});
}

最頻出の要素を見つけるアルゴリズム

配列内の要素の頻度を数えた後は、最頻出の要素を見つけるためのアルゴリズムを実装できます。以下は、最頻出の要素を見つける関数です。

function mostFrequent(arr) {
  const frequency = countOccurrences(arr);
  let maxFrequency = 0;
  let mostFrequentElement = null;

  for (const [key, value] of Object.entries(frequency)) {
    if (value > maxFrequency) {
      maxFrequency = value;
      mostFrequentElement = key;
    }
  }

  return mostFrequentElement;
}

コード例

以下は、上記の関数を使って最頻出の要素を見つける簡単な例です。

const array = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4];
const mostFrequentElement = mostFrequent(array);
console.log(`最頻出の要素は ${mostFrequentElement} です。`);

応用例

応用例1: 文字列の配列で最頻出の文字列を見つける

const stringArray = ['apple', 'banana', 'apple', 'orange', 'orange', 'apple'];
const mostFrequentString = mostFrequent(stringArray);
console.log(`最頻出の文字列は "${mostFrequentString}" です。`);

応用例2: オブジェクトの配列で最頻出のオブジェクトを見つける

const objectArray = [
  { name: 'Alice', age: 25 },
  { name: 'Bob', age: 30 },
  { name: 'Alice', age: 25 },
  { name: 'Charlie', age: 30 },
  { name: 'Alice', age: 25 },
];
const mostFrequentObject = mostFrequent(objectArray);
console.log('最頻出のオブジェクトは:', mostFrequentObject);