javascript 配列の最頻値を求める

javascript 配列の最頻値を求める

javascriptで、配列の最頻値を求めるサンプルコードを記述してます。

環境

  • OS windows10 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 108.0.5359.99

配列の最頻値

配列の最頻値は、以下のコードで取得することが可能です。

'use strict'

const arr = ["a", "a", "a", "b", "c", "d", "d", "e", "e", "e", "e"];

const c = (x, i, v) => (x[i] ? x[i].add(v) : x[i] = new Set(v), i);

const result = arr.reduce(function (x, v) { return (this.set(v, c(x, (this.get(v) + 1 || 1), v)), x); }.bind(new Map), []).pop();

console.log([...result]); // ['e']

結果が複数個存在していても取得されます。

'use strict'

const arr = ["a", "a", "a", "b", "c", "d", "d", "e", "e", "e"];

const c = (x, i, v) => (x[i] ? x[i].add(v) : x[i] = new Set(v), i);

const result = arr.reduce(function (x, v) { return (this.set(v, c(x, (this.get(v) + 1 || 1), v)), x); }.bind(new Map), []).pop();

console.log([...result]); // ['a','e']