js如何找出数组中重复最多的元素

如下array中 js如何找出数组中重复最多的元素(尽量用es6以上的语法,简洁点)

let ary = ['赵', '钱', '孙', '孙', '李', '周', '李', '周', '李'];

补充: 2018-7-17 10:42:53
其实我最开始是用mockjs做的一个关于数组的练习, 现在这个问题就是func10的需求部分, demo=>
https://codepen.io/vizocn/pen...

func10现在还未完成, 想请教各位看有没有更好更简洁的方法解决.
初始数组数据结构如下图

https://img2.mukewang.com/5b50a289000169a906680461.jpg

拉莫斯之舞
浏览 1486回答 2
2回答

慕村225694

function search(arr){    var maxCount = 0,        maxItem = '',        obj = {}    arr.forEach(function(item){        obj[item] ? (obj[item].count += 1) : obj[item] = {count: 1}        obj[item].count > maxCount && (maxCount = obj[item].count, maxItem = item)    })    //return {item:maxItem,count:maxCount}    return maxItem}

jeck猫

const d = {};let ary = ['赵', '钱', '孙', '孙', '李', '周', '李', '周', '李'];ary.forEach(k => !d[k] ? d[k] = 1 : d[k]++);const max = Object.keys(d).sort((a, b) => d[b] - d[a])[0];console.log(max)不算定义变量的话就2行 够简洁了吧const d = {};let ary = ['赵', '钱', '孙', '孙', '李', '周', '李', '周', '周', '李'];ary.forEach(k => !d[k] ? d[k] = 1 : d[k]++);const result = Object.keys(d).sort((a, b) => d[b] - d[a]).filter((k, i, l) => d[k] === d[l[0]]);console.log(result)更新了一下 result 是现在是数组结果 最长数量一样的值都会列出。如果只取最大值还是建议使用hfhan那种方式,比较正统,我这算 奇技淫巧 代码看起来短其实多了2次循环,不过如果你有把重复数量从大到小排序的需求倒是可以用用
打开App,查看更多内容
随时随地看视频慕课网APP