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

Sắp xếp tương đối trong JavaScript

Giả sử, chúng ta có hai mảng, giả sử arr1 và arr2. Các phần tử của arr2 là khác biệt và tất cả các phần tử trong arr2 cũng nằm trong arr1.

Chúng tôi được yêu cầu viết một hàm JavaScript nhận trong hai mảng như vậy và sắp xếp các phần tử của arr1 sao cho thứ tự tương đối của các mục trong arr1 giống như trong arr2. Các phần thực thi không xuất hiện trong arr2 nên được đặt ở cuối trong tổng số arr1 theo thứ tự tăng dần.

Ví dụ:Nếu hai mảng đầu vào là -

const arr1 = [2,3,1,3,2,4,6,7,9,2,19];
const arr2 = [2,1,4,3,9,6];

Sau đó, đầu ra phải là -

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

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[
   2, 2, 2, 1, 4,
   3, 3, 9, 6, 7,
   19
]