如何在JavaScript中按频率排序然后过滤重复-解决方案
我在面试时遇到了一个问题。问题是根据重复字符计数对数组进行排序。
问题:
['#','$','#','?','?','#','#','#']
输出:
[#,#,#,#,#,?,?,$]
所以我试图写一个解决方案,它按预期工作。请在评论中查看我的解决方案,如果有可用的优化范围,请告诉我。
如果有任何建议或疑虑,请告诉我
回答
您可以使用一个循环来计算出现次数,然后按它们的频率排序。
const
values = ['#', '$', '#', '?', '?', '#', '#', '#'],
counts = values.reduce((r, v) => (r[v] = (r[v] || 0) + 1, r), {});
values.sort((a, b) => counts[b] - counts[a]);
console.log(...values);