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

การจัดเรียงออบเจกต์ให้ค่า falsy อยู่ท้ายและเรียงค่าจริงจากมากไปน้อยใน JavaScript

บทความนี้สาธิตวิธีจัดเรียงอาร์เรย์ของออบเจกต์ โดยให้ออบเจกต์ที่มีค่า value เป็น falsy (false, null, undefined, 0, "") อยู่ด้านล่างสุด และออบเจกต์ที่มีค่า value เป็นตัวเลขจริงจะถูกเรียงจากมากไปน้อย

ตัวอย่างข้อมูล

const array = [
  {key: 'a', value: false},
  {key: 'a', value: 100},
  {key: 'a', value: null},
  {key: 'a', value: 23}
];

ตัวอย่างโค้ด

const arr = [
  {key: 'a', value: false},
  {key: 'a', value: 100},
  {key: 'a', value: null},
  {key: 'a', value: 23}
];

const isValFalsy = (obj) => !obj.value && typeof obj.value !== 'number';

const sortFalsy = arr => {
  arr.sort((a, b) => {
    if (isValFalsy(a) && isValFalsy(b)) {
      return 0;
    }
    if (isValFalsy(a)) {
      return 1;
    }
    if (isValFalsy(b)) {
      return -1;
    }
    return b.value - a.value;
  });
};

sortFalsy(arr);
console.log(arr);

ผลลัพธ์

[
  { key: 'a', value: 100 },
  { key: 'a', value: 23 },
  { key: 'a', value: false },
  { key: 'a', value: null }
]

คำอธิบาย

ฟังก์ชัน isValFalsy ตรวจสอบว่า value เป็น falsy และไม่ใช่ตัวเลข (เพื่อไม่ให้ 0 ถูกนับเป็น falsy)

ในการ sort: falsy ทั้งคู่ = 0, a เป็น falsy = 1 (ย้ายไปหลัง), b เป็น falsy = -1 (ย้ายไปหน้า), มิฉะนั้นเรียงตามค่า value จากมากไปน้อย (b.value - a.value)