I\'m trying to sort an array [3,3,2,1,3,2,2,2,1]
to [1,1,3,3,3,2,2,2,2]
.
I\'m trying to handle it using object, using the number as key, and th
You could get the count for sorting the array.
const sortNums = array => {
const count = {};
for (let v of array) count[v] = (count[v] || 0) + 1;
return array.sort((a, b) => count[a] - count[b] || a - b);
}
console.log(sortNums([3, 3, 2, 1, 3, 2, 1]));
An approach by using the object for sorting.
const sortNums = array => {
var count = {},
result = {};
for (let v of array) (count[v] = count[v] || []).push(v);
for (let a of Object.values(count)) (result[a.length] = result[a.length] || []).push(a);
return Object.values(result).flat(Infinity)
}
console.log(sortNums([3, 3, 2, 1, 3, 2, 1]));