สมมติว่าเรามีอาร์เรย์ของอ็อบเจกต์ที่มีข้อมูลความชื้นใน 7 วันของสัปดาห์ ข้อมูลวางอยู่สุ่มในอาร์เรย์ ต้องเรียงตามวัน: จันทร์ อังคาร พุธ ... อาทิตย์
อาร์เรย์ของเรา
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 }
];
กุญแจสำคัญคือสร้าง map object ที่แมปวันเฉพาะไปยัง index ที่ถูกต้อง
const map = {
'Monday': 1,
'Tuesday': 2,
'Wednesday': 3,
'Thursday': 4,
'Friday': 5,
'Saturday': 6,
'Sunday': 7
};
ตอนนี้เราสามารถใช้ Array.prototype.sort() พร้อม callback ที่จัดอันดับตาม index ใน map
โค้ดเต็ม
ตัวอย่าง
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);
ผลลัพธ์
ผลลัพธ์ของโค้ดนี้จะเป็น
[
{ 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 }
]