Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การเรียงลำดับวัตถุตามชื่อวัน JavaScript


สมมติว่าเรามีอาร์เรย์ของวัตถุที่มีข้อมูลเกี่ยวกับความชื้นในช่วงเจ็ดวันของสัปดาห์ อย่างไรก็ตาม ข้อมูลจะสุ่มอยู่ในอาร์เรย์ในขณะนี้ เราควรจัดเรียงอาร์เรย์ของอ็อบเจ็กต์ตามวัน เช่น ข้อมูลของวันจันทร์มาก่อน ตามด้วยวันอังคาร วันพุธ และวันอาทิตย์สุดท้าย

ต่อไปนี้เป็นอาร์เรย์ของเรา -

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