在 JavaScript 中按物件中欄位的存在對陣列進行排序


假設我們有以下物件陣列 −

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 的物件,最後是沒有 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 }
]

Updated on: 20-Aug-2020

236 Views

啟動你的 職業生涯

透過完成課程獲得認證

立即開始
廣告