javascript自定义排序函数,用于首先放置较低的引用

javascript自定义排序函数,用于首先放置较低的引用,javascript,sorting,Javascript,Sorting,需要为数组创建自定义排序-- --首先按频率分开数字 ---频率为1的子集合数 ---具有频率2的子集数 部分排序数据-关于asc频率顺序 -然后我们按非描述顺序对具有相同频率的元素的每个子集进行排序 function cSort(arr) { if(typeof arr !== "undefined") { arr.sort(function(a, b) { return a - b; }); return arr

需要为数组创建自定义排序--

--首先按频率分开数字 ---频率为1的子集合数 ---具有频率2的子集数

部分排序数据-关于asc频率顺序 -然后我们按非描述顺序对具有相同频率的元素的每个子集进行排序

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]

-- 当前JSFIDLE 1

新小提琴2

您可以对每个项目的发生次数进行排序

var数组=[5,3,1,2,2,4]。切片(1),
hash=array.reduce((h,v,i)=>(h[v]=(h[v]|0)+1,h),{});
sort((a,b)=>hash[a]-hash[b]|a-b);

console.log(数组)
需要按排序频率返回
5
怎么样,我相信输出应该是
[1,3,4,5,2,2]
不是吗?可能重复不确定为什么选择了5,但它不在测试结果中expected@Scath--尝试过--没有通过测试--测试2输入[10,8,5,5,5,5,5,1,1,1,4]输出[8,4,4,1,1,1,5,5,5,5]你可以只取剩下的部分,不带第一个元素。解决方案是什么?这是在[8,10,4,4,1,1,5,5,5,5]——而不是[8,4,4,4,1,1,1,1,5,5,5],你可以拼接大的项目。