สมมติว่าเรามีอาร์เรย์อ็อบเจกต์ดังนี้
const people = [
{ firstName: 'Ram', id: 301 },
{ firstName: 'Shyam', lastName: 'Singh', id: 1016 },
{ firstName: 'Dinesh', lastName: 'Lamba', id: 231 },
{ id: 341 },
{ firstName: 'Karan', lastName: 'Malhotra', id: 441 },
{ id: 8881 },
{ firstName: 'Vivek', id: 301 }
];
เราต้องเรียงอาร์เรย์ ให้อ็อบเจกต์ที่มี firstName และ lastName ทั้งคู่อยู่หน้าสุด ตามด้วยอ็อบเจกต์ที่มี firstName หรือ lastName เพียงอย่างใดอย่างหนึ่ง และสุดท้ายคืออ็อบเจกต์ที่ไม่มีทั้งคู่
โค้ด
ตัวอย่าง
const people = [
{ firstName: 'Ram', id: 301 },
{ firstName: 'Shyam', lastName: 'Singh', id: 1016 },
{ firstName: 'Dinesh', lastName: 'Lamba', id: 231 },
{ id: 341 },
{ firstName: 'Karan', lastName: 'Malhotra', id: 441 },
{ id: 8881 },
{ firstName: 'Vivek', id: 301 }
];
const sorter = (a, b) => {
if(a.firstName && a.lastName){
return -1;
}else if(b.firstName || b.lastName){
return 1;
}else{
return -1;
};
};
people.sort(sorter);
console.log(people);
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็น
[
{ firstName: 'Karan', lastName: 'Malhotra', id: 441 },
{ firstName: 'Dinesh', lastName: 'Lamba', id: 231 },
{ firstName: 'Shyam', lastName: 'Singh', id: 1016 },
{ firstName: 'Ram', id: 301 },
{ firstName: 'Vivek', id: 301 },
{ id: 8881 },
{ id: 341 }
]