สมมติว่ามีอาร์เรย์ของออบเจ็กต์และอาร์เรย์ของสตริงดังนี้:
ตัวอย่าง
const orders = [
{ status: "pending" },
{ status: "received" },
{ status: "sent" },
{ status: "pending" }
];
const statuses = ["pending", "sent", "received"];
เราต้องเขียนฟังก์ชัน JavaScript ที่รับสองอาร์เรย์ดังกล่าว วัตถุประสงค์คือเรียงลำดับอาร์เรย์ orders ตามลำดับขององค์ประกอบในอาร์เรย์ statuses
ดังนั้น ออบเจ็กต์ในอาร์เรย์แรกควรจัดเรียงตามสตริงในอาร์เรย์ที่สอง
ตัวอย่าง
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' }
]