JSFiddle - React, Tailwind, and code Playground
JavaScript
function mySort(arr) {
return Object.values(arr.reduce((acc,cur) => {
if (!acc[cur])
acc[cur]=[cur];
else
acc[cur].push(cur);
return acc;
},{})).sort((a,b) => {
lenA = a.length;
lenB = b.length;
return (lenA !== lenB) ? lenB- lenA : b[0] - a[0];
}).flat();
}
console.log(mySort([3,5,8,1,3])); // [3,3,8,5,1]
console.log(mySort([3,5,8,1,3])); // [5,5,2,2,1]
console.log(mySort([7,5,5,5,5])); // [5,5,5,5,7]
console.log(mySort([1,5,7,2,3])); // [7,5,3,2,1]
console.log(mySort([1,5,2,2,7,2,7,2,5,3])); // [2, 2, 2, 2, 7, 7, 5, 5, 3, 1]