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 關注
- 1509 瀏覽
添加回答
舉報