Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

เรียงอ็อบเจกต์ตามชื่อวันใน JavaScript

สมมติว่าเรามีอาร์เรย์ของอ็อบเจกต์ที่มีข้อมูลความชื้นใน 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 }
]