博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
找出数组中出现次数最多的元素
阅读量:5140 次
发布时间:2019-06-13

本文共 723 字,大约阅读时间需要 2 分钟。

最近朋友面试,看到一题面试题给大家分享一下。

题目是:一个长度为10000左右的字符串数组 var = ['aaa','bbb','ccc'...]请写出一个函数计算出现次数最多的字符串。

如果仅仅是用普通遍历来做的话就很不优雅了。因为数组长度是10000左右

在网上看到了这样一种方法 挺棒的。

function more(arr) {        let max=null;//定义一个用来存储出现次数最多的元素        let num=1;//定义一个用来存储最出现的次数         arr.reduce((p,k)=>{ //对该数组进行reduce遍历             p[k]?p[k]++:p[k]=1;                 if(p[k]>num){                     num=p[k]                     max=k                 }                 return p        },{})        return {max:max,num:num}//返回最多元素对象    }

 要搞明白这个方法,首先要明白数组的reduce方法:

   

 这个方法的思路是把整个数组转化为一个伪数组对象:元素和出现的次数以键值对的方式存储。

   reduce的第二个参数是传递给函数的初始值,第一个参数是一个函数。那么此方法中第一次将{}传递给了p参数,k参数为当前遍历的对象相当于Foreach中的item参数

  

最终得到的p对象:

 

转载于:https://www.cnblogs.com/hsBK/p/11283829.html

你可能感兴趣的文章
网易味央第二座猪场落户江西 面积超过3300亩
查看>>
面试时被问到的问题
查看>>
spring 事务管理
查看>>
VS2008 去掉msvcr90的依赖
查看>>
当前记录已被另一个用户锁定
查看>>
Node.js 连接 MySQL
查看>>
那些年,那些书
查看>>
注解小结
查看>>
java代码编译与C/C++代码编译的区别
查看>>
Bitmap 算法
查看>>
转载 C#文件中GetCommandLineArgs()
查看>>
list control控件的一些操作
查看>>
LVM快照(snapshot)备份
查看>>
绝望的第四周作业
查看>>
一月流水账
查看>>
npm 常用指令
查看>>
非常棒的Visual Studo调试插件:OzCode 2.0 下载地址
查看>>
判断字符串在字符串中
查看>>
Linux环境下Redis安装和常见问题的解决
查看>>
HashPump用法
查看>>