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+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告