JavaScript 中根據屬性值是否為 null 對陣列物件進行排序


問題陳述要求對物件陣列進行排序,並滿足一個特定條件:將陣列中鍵值對為 null 的物件推送到陣列的末尾,使用者輸入陣列作為輸入源。

什麼是 JavaScript 中的陣列?

如果您熟悉其他程式語言,例如 C、C++ 或 Java,您一定聽說過“陣列”這個術語。

在程式設計中,陣列是在一個“屋簷下”收集相似資料元素的集合。

現在,一個重要的問題出現了:如果陣列在所有語言中通常都是相同的,那麼 JavaScript 如何使陣列更獨特且更易用?

讓我們瞭解 JavaScript 中陣列的整體工作原理。

陣列是一個儲存多個元素的物件。由於陣列也是一個物件,因此它具有一些屬性和方法,使在 JavaScript 中處理陣列變得更容易。

以下是 JavaScript 中定義陣列的語法:−

示例

const arrayExample  = [ 2 , 3 , 5 ,6 ];
console.log(arrayExample);

輸出

[2, 3, 5, 6]

什麼是 Javascript 中的物件陣列?

陣列是有序的資料集合,而物件是無序的資料集合,例如物件表示汽車的屬性,物件陣列表示所有型別汽車的特定屬性。因此,物件陣列是在其內部包含多個物件的**有序**集合。

物件陣列的語法如下所示

let studentArray = [
  {
    "name": "priya",
    "course": "JS",
    "from": "tutorialspoint",
    
  },
  {
    "name": "ashish",
    "course": "React",
    "from": "tutorialspoint",
  },
  {
    ...
  },
  ...
]

演算法

步驟 1 − 宣告一個名為 sorterOfNullValues 的自定義排序函式,該函式以兩個值作為引數,以便根據大於、小於或等於引數對值進行排序。

步驟 2 − 建立另一個輔助函式,該函式決定要呼叫的自定義排序函式的邏輯,以根據問題陳述決定排序,以便如果鍵的值等於 null,則返回 Infinity(指的是 javascript 中返回輸入物件陣列中最大數字的全域性物件),否則返回原始輸入中存在的原始值。

步驟 3 − 建立一個主函式,該函式對使用者提供的原始輸入物件陣列呼叫自定義排序函式。

示例

const sorterOfNullValues = (a, b) => {
      return assignValueOfNullAtEnd(a.value) - assignValueOfNullAtEnd(b.value);
   };
   
 const assignValueOfNullAtEnd = val => {
      if(val === null){
         return Infinity;
      }
      else{
         return val;
      };
   };
   
   
 function finalSorter(arr)
 {
    return  arr.sort(sorterOfNullValues);
 }
 
const arr  = [
  { name: 'eric', value: 1 },
  { name: 'bob', value: 4 },
  { name: 'michael', value: 0 },
  { name: 'john', value: 3 },
  { name: 'brad', value: null },
  { name: 'martin', value: 2 },
  { name: 'chris', value: null }
];
console.log(finalSorter(arr));

根據問題陳述,使用上述演算法的特定程式碼在控制檯中如下所示

輸出

[
  { name: 'michael', value: 0 },
  { name: 'eric', value: 1 },
  { name: 'martin', value: 2 },
  { name: 'john', value: 3 },
  { name: 'bob', value: 4 },
  { name: 'brad', value: null },
  { name: 'chris', value: null }
]

時間和空間複雜度

Array.sort() 方法基於時間排序演算法,時間複雜度為 O(n log n),最壞情況下時間複雜度變為 O(n^2)。

結論

這就是我們如何透過邏輯思考和編碼上下文解決上述問題陳述,藉助 javascript 方法及其最有效用例中的自定義排序。

更新於: 2023-08-21

3K+ 閱讀量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告