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

จัดเรียงอาร์เรย์ตามอาร์เรย์อื่นใน JavaScript


สมมติว่าเรามีตัวอักษรสองตัวแบบนี้ -

const arr1 = [1, 3, 2, 4, 5, 6];
const arr2 = [1, 2, 5];

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

เช่นเดียวกับองค์ประกอบที่ปรากฏในอาร์เรย์ทั้งสองควรปรากฏเป็นลำดับแรกตามลำดับในอาร์เรย์ที่สอง ตามด้วยองค์ประกอบที่มีอยู่ในอาร์เรย์แรกเท่านั้นที่รักษาลำดับไว้

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const arr1 = [1, 3, 2, 4, 5, 6];
const arr2 = [1, 2, 5];
const sortByReference = (arr1, arr2) => {
   const inBoth = el => arr1.indexOf(el) !== -1 && arr2.indexOf(el) !== -1;
   const sorter = (a, b) => {
      if(inBoth(a) && inBoth(b)){
         return arr1.indexOf(a) - arr2.indexOf(b);
      }
      if(inBoth(a)){
         return -1;
      };
      if(inBoth(b)){
         return 1;
      };
      return 0;
   };
   arr1.sort(sorter);
};
sortByReference(arr1, arr2);
console.log(arr1);

ผลลัพธ์

เอาต์พุตในคอนโซล −

[ 1, 2, 5, 3, 4, 6 ]