【发布时间】:2021-12-03 02:49:44
【问题描述】:
我想按元素频率对数组进行排序。我的代码适用于字符串数组,但不适用于数字数组:
const countOccurrences = (arr, val) => arr.reduce((a, v) => (v === val ? a + 1 : a), 0);
function frequencySort(arr){
let d = {}
arr.forEach(i => d[i] = countOccurrences(arr,i))
arr.sort(function(a,b){
return d[b] - d[a]
})
return arr
}
frequencySort(['a','b','b','b','c','c'])) returns [ 'b', 'b', 'b', 'c', 'c', 'a' ]
frequencySort([4, 6, 2, 2, 6, 4, 4, 4]) returns [ 4, 4, 4, 4, 6, 2, 2, 6 ]
谁能帮帮我?谢谢!
【问题讨论】:
-
@M4rs3l ... 从所有提供的解决方案/方法中,还有什么问题吗?
-
我完全是新来的,忘记了这一点。现在浏览答案,一切都非常有帮助。 @PeterSeliger 我的赞成票尚未计算在内,但已记录在案。
标签: javascript arrays sorting frequency