需要为数组创建自定义排序-
-按频率第一个单独的数字 ---频率为1的子集号 ---频率为2的子集数量
部分排序的数据-关于频率的升序 -然后我们以非降序对具有相同频率的元素的每个子集进行排序
function cSort(arr) {
if(typeof arr !== "undefined") {
arr.sort(function(a, b) {
return a - b;
});
return arr
}
}
需要满足测试用例
-测试1 输入 [5、3、1、2、2、4] 输出 [1、3、4、2、2]
-测试2 输入 [10,8,5,5,5,5,1,1,1,4,4] 输出 [8,4,4,1,1,1,5,5,5,5]
- 当前jsfiddle 1 http://jsfiddle.net/6mekdn8h/
答案 0 :(得分:2)
您可以对每个项目的出现次数进行排序。
var array = [5, 3, 1, 2, 2, 4].slice(1),
hash = array.reduce((h, v, i) => (h[v] = (h[v] || 0) + 1, h), {});
array.sort((a, b) => hash[a] - hash[b] || a - b);
console.log(array);