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 方法及其最有效用例中的自定義排序。