Cần viết hàm JavaScript nhận mảng số có thể chứa số lặp. Hàm sắp xếp mảng sao cho phần tử lặp ít nhất xuất hiện trước, theo sau là phần tử với tần suất tăng dần.
Ví dụ - Nếu mảng đầu vào:
const arr = [1,1,2,2,2,3];
Mảng đã sắp xếp:
const output = [3,1,1,2,2,2];
Ví dụ
const arr = [1, 1, 2, 2, 2, 3];
const frequencySort = (arr = []) => {
let map = {};
for (let i = 0; i < arr.length; i++) {
map[arr[i]] = (map[arr[i]] || 0) + 1;
};
return arr.sort((a,b) => map[a] - map[b] || b - a);
};
frequencySort(arr);
console.log(arr);
Kết quả
Điều này sẽ tạo ra đầu ra sau:
[ 3, 1, 1, 2, 2, 2 ]