สมมติว่าเรามีอาร์เรย์ของวัตถุและอาร์เรย์ของสตริงเช่นนี้ −
ตัวอย่าง
const orders = [ { status: "pending"}, { status: "received" }, { status: "sent" }, { status: "pending" } ]; const statuses = ["pending", "sent", "received"];
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์สองอาร์เรย์ดังกล่าว วัตถุประสงค์ของฟังก์ชันควรจะจัดเรียงอาร์เรย์คำสั่งตามองค์ประกอบของอาร์เรย์สถานะ
ดังนั้น ออบเจ็กต์ในอาร์เรย์แรกควรจัดเรียงตามสตริงในอาร์เรย์ที่สอง
ตัวอย่าง
const orders = [ { status: "pending" }, { status: "received" }, { status: "sent" }, { status: "pending" } ]; const statuses = ["pending", "sent", "received"]; const sortByRef = (orders, statuses) => { const sorter = (a, b) => { return statuses.indexOf(a.status) - statuses.indexOf(b.status); }; orders.sort(sorter); }; sortByRef(orders, statuses); console.log(orders);
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[ { status: 'pending' }, { status: 'pending' }, { status: 'sent' }, { status: 'received' } ]