Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Sắp xếp ưu tiên (Priority Sort) - JavaScript

Viết hàm nhận 2 mảng, sắp xếp mảng 1 tăng dần nhưng đưa các phần tử có trong mảng 2 lên đầu (cũng tăng dần trong nhóm ưu tiên).

Ví dụ

Mảng 1: [5, 4, 3, 2, 1]

Mảng 2 (ưu tiên): [2, 3]

Kết quả: [2, 3, 1, 4, 5]

Giải pháp

Mã triển khai tùy chỉnh comparator:

const arr1 = [5, 4, 3, 2, 1];
const arr2 = [2, 3];

const prioritySort = (arr1, arr2) => {
  const prioritySet = new Set(arr2);
  arr1.sort((a, b) => {
    const aPri = prioritySet.has(a);
    const bPri = prioritySet.has(b);
    if (aPri && !bPri) return -1;
    if (!aPri && bPri) return 1;
    return a - b; // Cùng nhóm: sắp xếp tăng dần
  });
};

prioritySort(arr1, arr2);
console.log(arr1);

Kết quả

Đầu ra trong console:

[2, 3, 1, 4, 5]