在 JavaScript 中按具有空值的属性对数组对象进行排序
问题陈述说要对一个对象数组进行排序,采用一个特定条件对对象数组中存在的空值键对进行排序,并将其推送到数组末尾,其中对象数组由用户作为输入源提供。
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 方法和自定义排序来解决上述问题陈述,这是最有效的用例。