Giả sử, chúng ta có một loạt các đối tượng chứa dữ liệu về độ ẩm qua các ngày trong tuần. Tuy nhiên, dữ liệu nằm ngẫu nhiên trong mảng ngay bây giờ. Chúng ta phải sắp xếp mảng đối tượng theo ngày như dữ liệu cho Thứ Hai đến trước, sau đó đến Thứ Ba, Thứ Tư và cuối cùng là Chủ Nhật.
Sau đây là mảng của chúng tôi -
const weather = [{ day: 'Wednesday', humidity: 60 }, { day: 'Saturday', humidity: 50 }, { day: 'Thursday', humidity: 65 }, { day: 'Monday', humidity: 40 }, { day: 'Sunday', humidity: 35 }, { day: 'Friday', humidity: 80 }, { day: 'Tuesday', humidity: 45 }];
Chìa khóa của vấn đề này là tạo đối tượng bản đồ của chúng tôi để lập bản đồ các ngày cụ thể trong tuần cho các chỉ số chính xác của chúng. Nó trông giống như thế này -
const map = { 'Monday': 1, 'Tuesday': 2, 'Wednesday': 3, 'Thursday': 4, 'Friday': 5, 'Saturday': 6, 'Sunday': 7 };
Bây giờ với điều này rõ ràng, chúng ta có thể áp dụng phương thức Array.prototype.sort () truyền vào một tùy chỉnh gọi lại để xếp hạng đối tượng theo chỉ mục của chúng trong bản đồ.
Mã đầy đủ cho điều này sẽ là -
Ví dụ
const weather = [{ day: 'Wednesday', humidity: 60 }, { day: 'Saturday', humidity: 50 }, { day: 'Thursday', humidity: 65 }, { day: 'Monday', humidity: 40 }, { day: 'Sunday', humidity: 35 }, { day: 'Friday', humidity: 80 }, { day: 'Tuesday', humidity: 45 }]; const map = { 'Monday': 1,'Tuesday': 2,'Wednesday': 3,'Thursday': 4,'Friday': 5,'Saturday': 6, 'Sunday': 7 }; weather.sort((a, b) => { return map[a.day] - map[b.day]; }); console.log(weather);
Đầu ra
Đầu ra cho mã này sẽ là -
[ { day: 'Monday', humidity: 40 }, { day: 'Tuesday', humidity: 45 }, { day: 'Wednesday', humidity: 60 }, { day: 'Thursday', humidity: 65 }, { day: 'Friday', humidity: 80 }, { day: 'Saturday', humidity: 50 }, { day: 'Sunday', humidity: 35 } ]