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]