如何在JavaScript中对包含undefined的数组进行排序

如何在JavaScript中对包含undefined的数组进行排序

在JavaScript中,数组用于在单个变量中存储多个值。与仅能保存一个值的变量相反,数组的每个元素都有一个称为数字索引的数字与之关联,使我们能够访问它。JavaScript中的数组从索引零开始,并且可以使用许多不同的技术进行修改。

让我们看一下对包含undefined的数组进行排序的一般情况。给出以下数组-

var namearr = ["Zebra", "Yatch", undefined, "Egg", undefined];

可以使用sort()方法对包含undefined的数组进行排序。当我们将sort()方法应用于数组时,它将显示以下输出-

Var namearr=[“Egg”,”Yatch”,”Zebra”,undefined,undefined];

让我们深入文章学习如何在JavaScript中对包含undefined的数组进行排序。

在JavaScript中使用sort()

sort()方法在数组仍在数组中时对其进行排序,然后返回新排序的数组的引用。由于项目转换为字符串,因此默认排序顺序是按升序排列。

语法

下面是sort()的语法-

sort() //无函数
sort((a, b) => { /* ... */ }) //箭头函数
sort(compareFn) //比较函数
sort(function compareFn(a, b) { /* ... */ }) //内联比较函数

为了更好地理解在JavaScript中对包含undefined的数组进行排序,让我们看一下以下示例。

示例

在以下示例中,我们声明了一个具有undefined值的数组,然后使用sort()方法对数组进行排序,其中将首先显示数组中的值,然后是undefined。

<!DOCTYPE html>
<html>
   <body>
      <script>
      var arrname = ["Frog", undefined, "Dog", undefined];
      arrname.sort(function(a, b) {
         if (a == undefined) {
            a = ""
         }
         if (b == undefined) {
            b = ""
         }
         return a.localeCompare(b);
      });
      document.write(JSON.stringify(arrname));
      </script>
   </body>
</html>

当脚本执行时,由于运行脚本时触发了一个事件,在网页上会生成一个由按升序排列的数组组成的输出,显示”值”在前,”undefined”在后。

示例

考虑以下示例,我们通过在数组中声明具有undefined值的数组来运行脚本,稍后我们使用sort()方法将数组按从高到低的顺序排序,随后是undefined值。

<!DOCTYPE html>
<html>
   <body>
      <script>
         const arr = ['yatch', undefined, undefined, 'bus'];
         const sortdescending = arr.sort((a, b) => {
            if (a === null) {
               return 1;
            }
            if (b === null) {
               return -1;
            }
            if (a === b) {
               return 0;
            }
            return a < b ? 1 : -1;
         });
         document.write(JSON.stringify(sortdescending));
      </script>
   </body>
</html>

运行上述脚本,输出窗口将弹出,其中显示了按从高到低的顺序排序的数组,以及由一个事件引起的undefined值。

例子

执行下面的代码来查看如何使用 sort() 方法对包含 undefined 值的数组进行排序。

<!DOCTYPE html>
<html>
   <body>
      <p id="tutorial"></p>
      <script>
         data = [{
            car: 'BMW',
            rating: 'undefined'
         }, {
            bike: 'BENZ',
            rating: 11.34,
            jobTitle: 'engineering'
         }, {
            vehicle: 'RX100',
            rating: 11.34,
            jobTitle: 'mechanic'
         }, ];
         data.sort((x, y) => {
            if (x.jobTitle && y.jobTitle) {
               return (x.rating || 0) - (x.rating || 0);
            } else if (x.jobTitle || y.jobTitle) {
               return !(x.jobTitle) - !(y.jobTitle)
            } else {
               return (y.rating || 0) - (y.rating || 0);
            }
         });
         document.getElementById("tutorial").innerHTML = JSON.stringify(data);
      </script>
   </body>
</html>

当脚本被执行时,事件被触发并在网页上以升序显示已排序的数组,首先显示数值,然后在数组末尾显示 undefined 值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

JavaScript 教程