前端面试题-找出数组中出现最多的元素与其长度

最近在跑面试,最近遇到过好几次同样的笔试题,其中一个就是这个:

[1,1,1,3,3,4,4,4,4],在这样一组数组中找到里面出现最多的元素以及出现的次数

一年前被面试到的时候是电话面试题,当时没有思想准备,想到的最直接的办法就是一个for循环把不同元素分不同数组存储,最后一个去比较他们的长度,这样的方法现在想来很蠢,也很费内存;

最近又在面试过程中遇到了同样的笔试题,还有一个是直接让我敲代码的,我目前想到的比较简单一点的方法如下,当然,如果有更好的方法可以交流,本人现在来说是技术菜鸟

const arr = [1,1,1,3,3,4,4,4,4]

let obj = {}

arr.forEach(el => {

        obj[el] ? obj[el] += 1 : obj[el] = 1

})

let max = '' // 用于存储出现最多的元素

let maxNum = 0  // 用于存储出现最多元素的长度,也就是出现次数

Object.keys(obj).forEach(el => {

        if (obj[el] > maxNum) {

                max = el

                maxNum = obj[el]

        }

})

还有遇到数组里存在多个出现次数一样,且是最多的,在拿到最大数之后再遍历查找下,属性值跟这个最大值一样的就行

记录一下,如果对你有帮助,再好不过了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值