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

เรียงลำดับอาร์เรย์ของออบเจ็กต์โดยอิงจากอาร์เรย์อีกอันใน JavaScript

สมมติว่ามีอาร์เรย์ของออบเจ็กต์และอาร์เรย์ของสตริงดังนี้:

ตัวอย่าง

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' }
]