在 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.