สมมติว่าเรามีอาร์เรย์ของวัตถุและอาร์เรย์ของสตริงเช่นนี้ −
ตัวอย่าง
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' }
]