например, предположим, у меня есть массив: [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);
}
}
, который имеет много строк кодов, есть ли более простой метод?