JavaScript 按属性对具有null值的数组对象进行排序

JavaScript 按属性对具有null值的数组对象进行排序

问题陈述要求对数组对象进行排序,采用特定条件对数组对象中的null值键值对进行排序,并将其推送到数组末尾,其中数组对象由用户作为输入源给出。

JavaScript中的数组是什么

如果您熟悉其他编程语言,比如CC++或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 的自定义排序函数,它以两个值作为参数,根据 greater、lesser 或 equal 参数来排序这些值。

步骤 2 - 创建另一个辅助函数,根据问题说明确定调用自定义排序函数的逻辑,如果键的值等于 null,则返回无穷大,该无穷大是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方法和自定义排序的最高效用例。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程