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

การจัดเรียงอาร์เรย์ตามลำดับมาตรฐาน - JavaScript

จัดเรียงอาร์เรย์ 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