在 JavaScript 中排序包含 undefined 的数组?


在 JavaScript 中,数组用于在一个变量中保存多个值。与只能保存一个值的变量相反,数组可以做到这一点。数组的每个元素都与一个称为数字索引的数字相关联,该数字索引允许访问它。JavaScript 中的数组从索引零开始,并且可以使用多种不同的技术进行修改。

让我们看一下在 JavaScript 中排序包含 undefined 的数组的一般情况。数组如下所示:

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

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

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

让我们深入了解这篇文章,以便更好地理解如何在 JavaScript 中排序包含 undefined 的数组。

在 JavaScript 中使用 sort()

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

语法

以下是 **sort()** 的语法:

sort() // Functionless
sort((a, b) => { /* … */ } ) // Arrow function
sort(compareFn) // Compare function
sort(function compareFn(a, b) { /* … */ }) // Inline compare function

为了更深入地了解如何在 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 值。

更新于:2023年4月21日

2K+ 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.