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