สมมติว่าเรามีอาร์เรย์ของวัตถุที่มีข้อมูลเกี่ยวกับความชื้นในช่วงเจ็ดวันของสัปดาห์ อย่างไรก็ตาม ข้อมูลจะสุ่มอยู่ในอาร์เรย์ในขณะนี้ เราควรจัดเรียงอาร์เรย์ของอ็อบเจ็กต์ตามวัน เช่น ข้อมูลของวันจันทร์มาก่อน ตามด้วยวันอังคาร วันพุธ และวันอาทิตย์สุดท้าย
ต่อไปนี้เป็นอาร์เรย์ของเรา -
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
}; ด้วยความชัดเจนนี้ เราจึงสามารถใช้เมธอด Array.prototype.sort() ที่ส่งผ่าน customcallback ที่จัดอันดับวัตถุตามดัชนีในแผนที่ได้
รหัสเต็มสำหรับสิ่งนี้จะเป็น -
ตัวอย่าง
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 }
]