Javascript 如何对数组进行排序,首先是哪个最常见的元素?

Javascript 如何对数组进行排序,首先是哪个最常见的元素?,javascript,arrays,sorting,Javascript,Arrays,Sorting,例如,假设我有一个数组:[3,2,2,1,4,5,3,2,2,1,1],我想将其排序为以下形式: [2,2,2,2,1,1,1,3,3,4,5] 哪一个2是最常见的元素,然后是1,依此类推,如何编写排序函数: let arr=[3,2,2,1,4,5,3,2,2,1,1]; arr.sort(function(p0,p1){ //how to write it? }); 这么做 我试过: let arr=[3,2,2,1,4,5,3,2,2,1,1]; let numPosMap=n

例如,假设我有一个数组:[3,2,2,1,4,5,3,2,2,1,1],我想将其排序为以下形式:

[2,2,2,2,1,1,1,3,3,4,5]
哪一个2是最常见的元素,然后是1,依此类推,如何编写排序函数:

let arr=[3,2,2,1,4,5,3,2,2,1,1];
arr.sort(function(p0,p1){
  //how to write it?
});
这么做

我试过:

 let arr=[3,2,2,1,4,5,3,2,2,1,1];
 let numPosMap=new Map();
 for(let i=0;i<arr.length;i++){
     let num=arr[i];
     if(!numPosMap[num]){
         numPosMap[num]=[];
     }
     numPosMap[num].push(i);
 }
 let posArrayArray=[];
 for(let num in numPosMap) {
     posArrayArray.push(numPosMap[num]);
 }
 posArrayArray.sort(function(a,b){
   return a.length<b.length;
 });

 let resultArr=[];
 for(let posArray of posArrayArray){
   for(let pos of posArray){
     resultArr.push(pos);
   }
 }
设arr=[3,2,2,1,4,5,3,2,2,1,1];
设numPosMap=newmap();

对于(设i=0;i我的建议是创建另一个对象,计算数组中每个元素出现的数量。一旦有了它,就可以通过比较每个元素的数量进行排序

例如:

让arr=[3,2,2,1,4,5,3,2,2,1,1];
//先做一些预处理。。。
让计数=arr.reduce((计数,num)=>{
计数[num]=(计数[num]| | 0)+1;
返回计数;
}, {});
控制台日志(计数);
arr.sort(函数(p0,p1){
返回计数[p1]-计数[p0];
});

控制台日志(arr)
发布的问题似乎根本不包括解决问题的方法。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您尝试了什么,以便说明您在a中遇到的特定问题。有关更多信息,请参阅并采取行动。