Computer >> Máy Tính >  >> Lập trình >> Javascript

Sắp xếp một mảng đối tượng theo một JavaScript mảng

Giả sử, chúng ta có một mảng các đối tượng và một mảng chuỗi như thế này -

Ví dụ

const orders = [
   { status: "pending"},
   { status: "received" },
   { status: "sent" },
   { status: "pending" }
];
const statuses = ["pending", "sent", "received"];

Chúng tôi được yêu cầu viết một hàm JavaScript có hai mảng như vậy. Mục đích của hàm là sắp xếp mảng đơn hàng theo các phần tử của mảng trạng thái.

Do đó, các đối tượng trong mảng đầu tiên nên được sắp xếp theo các chuỗi trong mảng thứ hai.

Ví dụ

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);

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[
   { status: 'pending' },
   { status: 'pending' },
   { status: 'sent' },
   { status: 'received' }
]