如果我有一个数字数组,想找到出现次数最多的数字,但是有两个或以上数字出现频率相同,我该怎么办?例如下面的例子应该返回1和7,但我只得到了7。希望得到帮助。
let arr = [1, 1, 2, 3, 4, 5, 6, 7, 7];
function findMode(numbers) {
let counted = numbers.reduce((acc, curr) => {
if (curr in acc) {
acc[curr]++;
} else {
acc[curr] = 1;
}
return acc;
}, {});
let mode = Object.keys(counted).reduce((a, b) => counted[a] > counted[b] ? a : b);
return mode;
}
console.log(findMode(arr));
9
将不会从[1, 1, 9, 2, 3, 4, 5, 9, 6, 7, 7]
中被选中。 - Carsten Massmann