如何在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);


以上是如何在JavaScript中按频率排序然后过滤重复-解决方案的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>