【JavaScript】配列内の重複した要素をカウントする
やりたいこと
const array = [1, 1, 1, 2, 2, 3];
配列内で各要素がそれぞれ何個ずつ存在するのかを集計したい。
解決法
mapを使う方法
const array = [1, 1, 1, 2, 2, 3];
const map = array.reduce( (acc, curr) => acc.set(curr, (acc.get(curr) || 0) + 1), new Map());
console.log([...map.keys()]); // [1, 2, 3]console.log([...map.values()]); // [3, 2, 1]console.log([...map.entries()]); // [[1, 3], [2, 2], [3, 1]]
オブジェクトを使う方法
const array = [1, 1, 1, 2, 2, 3];
const counts = array.reduce( (acc, curr) => ((acc[curr] = ++acc[curr] || 1), acc), {});
console.log(counts); // {1: 3, 2: 2, 3: 1}