Giả sử chúng ta có hai mảng, arr1 và arr2. Các phần tử của arr2 khác nhau, và tất cả phần tử trong arr2 cũng có trong arr1.
Chúng ta cần viết hàm JavaScript nhận vào hai mảng này và sắp xếp phần tử arr1 sao cho thứ tự tương đối của các mục trong arr1 giống với arr2. Các phần tử không xuất hiện trong arr2 đặt ở cuối arr1 theo thứ tự tăng dần.
Ví dụ: Nếu hai mảng đầu vào:
const arr1 = [2,3,1,3,2,4,6,7,9,2,19]; const arr2 = [2,1,4,3,9,6];
Kết quả:
const output = [2,2,2,1,4,3,3,9,6,7,19];
Ví dụ
const arr1 = [2,3,1,3,2,4,6,7,9,2,19];
const arr2 = [2,1,4,3,9,6];
const relativeSortArray = (arr1, arr2) => {
const map = new Map();
const len = arr2.length;
arr2.forEach((a, i) => {
map.set(a, i);
});
return arr1.sort((a, b) => {
a = map.has(a) ? map.get(a) : len + a;
b = map.has(b) ? map.get(b) : len + b;
return a - b;
});
};
console.log(relativeSortArray(arr1, arr2));Kết quả
Kết quả in ra console:
[ 2, 2, 2, 1, 4, 3, 3, 9, 6, 7, 19 ]