Computer >> Máy Tính >  >> Lập trình >> Javascript

Sắp xếp mảng Số theo tần suất tăng dần JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript nhận vào một mảng số có thể chứa một số số lặp lại.

Hàm nên sắp xếp mảng sao cho các phần tử được lặp lại với số lần ít nhất xuất hiện đầu tiên, sau đó là các phần tử có tần suất tăng dần.

Ví dụ -

Nếu mảng đầu vào là -

const arr = [1,1,2,2,2,3];

Khi đó, mảng được sắp xếp phải là -

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);

Đầu ra

Điều này sẽ tạo ra kết quả sau -

[ 3, 1, 1, 2, 2, 2 ]