【问题标题】:How to display the number that is most repeated in the array? [duplicate]如何显示数组中重复次数最多的数字? [复制]
【发布时间】:2020-12-07 16:06:15
【问题描述】:

我没有找到使用 JavaScript 的简单示例;

所以我有一个数字数组,我需要显示数组中重复次数最多的数字。

const getNumber = arr => {}

console.log(getNumber([1,2,5,2,8,5,2,10,1]))

【问题讨论】:

  • 你是怎么解决这个问题的?能否请您添加代码?
  • @HarmandeepSinghKalsi 我在面试中得到了这个任务,但我不知道如何做))
  • 看我的回答@Gover123

标签: javascript


【解决方案1】:
const arr = [4,5,4,3,2,1,7,8,4];

const sortArr = (arr) => {
  arr.sort();
    var max=0,result,freq = 0;
    for(var i=0; i < arr.length; i++){
        if(arr[i]===arr[i+1]){
            freq++;
        }
        else {
            freq=0;
        }
        if(freq>max){
            result = arr[i];
            max = freq;
        }
    }
    return result;
}
console.log(sortArr(arr));   //Output 4

【讨论】:

  • 你能解释一下这部分吗:if(freq>max){ result = arr[i];最大值 = 频率; }
【解决方案2】:

使用Array#reduce 获取一个对象,该对象具有所有已使用数字及其计数的属性。比使用Object#entries 来摆脱这个包含数字及其计数的数组,然后再次使用reduce 来查找具有最大计数的数字。获取数字(第一个元素)并返回它。

const getNumber = arr => {
    let counts = arr.reduce((acc, cur) => {
        if (!acc[cur]) {
            acc[cur] = 1;
        } else {
            acc[cur]++;
        }
        return acc;
    },{});
    return Object.entries(counts).reduce(([nr,max], [n, count]) => (count>max) ? [n, count] : [nr, max] )[0];

}

console.log(getNumber([1,2,5,2,8,5,2,10,1]));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多