在 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 值。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP