Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การจัดเรียงแบบสัมพัทธ์ (Relative Sorting) ใน JavaScript


ภาพรวม

สมมติว่าเรามีอาร์เรย์สองอาร์เรย์ arr1 และ arr2 อิลิเมนต์ของ arr2 ไม่ซ้ำ และทุกอิลิเมนต์ใน arr2 ก็อยู่ใน arr1 ด้วย

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

ตัวอย่าง

อินพุต:

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 ]