Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การเรียงลำดับแบบสัมพัทธ์ใน JavaScript


สมมติว่า เรามีอาร์เรย์สองอาร์เรย์ สมมุติว่า arr1 และ arr2 องค์ประกอบของ arr2 มีความแตกต่างกัน และองค์ประกอบทั้งหมดใน arr2 ก็อยู่ใน arr1 ด้วย

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์สองอาร์เรย์ดังกล่าวและจัดเรียงองค์ประกอบของ arr1 เพื่อให้การเรียงลำดับแบบสัมพัทธ์ของรายการใน arr1 เหมือนกับใน arr2 ควรวางองค์ประกอบที่ไม่ปรากฏใน arr2 ไว้ที่ส่วนท้าย ของ arr1 เรียงลำดับจากน้อยไปมาก

ตัวอย่างเช่น− หากอาร์เรย์อินพุตทั้งสองเป็น −

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

จากนั้นผลลัพธ์ควรเป็น −

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

ตัวอย่าง

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

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

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