2 回答
TA贡献1880条经验 获得超4个赞
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
}
TA贡献1909条经验 获得超7个赞
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次循环,不过如果你有把重复数量从大到小排序的需求倒是可以用用
- 2 回答
- 0 关注
- 1485 浏览
添加回答
举报