【前端面试】js查询数组中重复最多次数的值

【前端面试】js查询数组中重复最多次数的值,第1张

前端面试 – 笔试题 js查询数组中重复最多次数的值,注意:值不一定只有一个,可能有多个

2022.05.18
参加了人生中第一场面试的笔试,但是自己之前由于时间原因,并没有用JavaScript刷过算法,一些题目虽然有思路,但是C++的写法和JavaScript的不一样,我还是弄不出来。
放了暑假,我一定好好刷算法😭


该题的思路:
好像用map存储每个数字的个数行不通,我最开始的思路是用一个新数组存储,temp[index]++,但是行不通。最后看了答案,用一个对象存储,这个对象的属性是每个数字,属性值是这个数字的个数。

function foo(array) {
  let arr = [];//存放最多次数的值
  let temp = {};//保存每个数的个数
  let res = 0;//记录出现最多次数的个数
  array.forEach(item => {
    if(temp[item] === undefined) { //如果这个数之前没出现过
      temp[item] = 1;//将它的次数赋为1
    } else {
      temp[item]++;//次数++
    }
  });
  for(let i in temp) {//遍历下标
    if(temp[i] > res){//如果这个数的次数比之前出现过的最多次数还多
      arr.length = 0;//清空数组
      arr.push(Number(i));//将这个数加入最终答案,因为属性名是字符串,将它转换为数字
      res = temp[i];//更新最大次数
    }else if(temp[i] === res){//出现次数相同的数字
      arr.push(Number(i));//将答案加入数组
      res = temp[i];//更新最大次数
    }
  }
  return arr;
}

console.log(foo([1,1,2,5,5,4,6,9]));//[ 1, 5 ]

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1297274.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存