จัดเรียงอาร์เรย์ dynamic ตามลำดับที่กำหนดในอาร์เรย์มาตรฐาน (reference array)
ตัวอย่าง
dbArray = ['Apple','Banana','Mango','Apple','Mango','Mango','Apple'] stdArray = ['Mango','Apple','Banana','Grapes'] result = ['Mango','Mango','Mango','Apple','Apple','Apple','Banana']
ตัวอย่างโค้ด
const dbArray = ['Apple','Banana','Mango','Apple','Mango','Mango','Apple'];
const stdArray = ['Mango','Apple','Banana','Grapes'];
const sortByRef = (arr, ref) => {
const sorter = (a, b) => ref.indexOf(a) - ref.indexOf(b);
arr.sort(sorter);
};
sortByRef(dbArray, stdArray);
console.log(dbArray);
การทำงาน
ref.indexOf(a)หาตำแหน่งในอาร์เรย์มาตรฐาน- ความต่างของ index กำหนดลำดับการจัดเรียง
- สมาชิกที่ไม่มีใน ref จะได้ -1 → อยู่หน้าสุด (อาจต้องจัดการเพิ่ม)
ผลลัพธ์
[ 'Mango', 'Mango', 'Mango', 'Apple', 'Apple', 'Apple', 'Banana' ]
ประสิทธิภาพ: สร้าง Map จาก ref ก่อนเพื่อ O(1) lookup แทน O(n) ของ indexOf