如何在 JavaScript 中定義自定義排序函式?
在 JavaScript 中建立自定義排序函式可以成為自定義和最佳化排序過程的好方法。透過定義自定義排序函式,您可以控制陣列元素的特定排序順序。
本文將解釋如何在 JavaScript 中定義自定義排序函式,提供一些使用示例,並討論一些確保排序過程儘可能高效的技巧。
通常,此方法會透過移動某些元素來更改初始陣列。
此外,sort() 方法在使用字串比較進行排序之前,會將輸入陣列的元素轉換為字串。當您輸入一個數字陣列時,它們將首先轉換為其字串等價物,然後再進行比較。
JavaScript 中的自定義 sort()
自定義 sort() 是 JavaScript 中的一種方法,它允許使用者為陣列指定自己的自定義排序函式。
當您需要按特定順序(例如按字母順序或按數字順序升序)排序元素時,這非常有用。自定義排序函式接受兩個引數,並根據值應該如何相互排序返回 1、0 或 -1。
示例
在以下示例中,我們正在執行指令碼以及自定義 sort()。在這種情況下,我們聲明瞭一個包含一些名稱的陣列,然後我們使用條件邏輯執行自定義排序。
<!DOCTYPE html>
<html>
<body>
<p id="tutorial"></p>
<script>
var array = ['BMW', 'BENZ', 'AUDI', 'DUCATI'];
array.sort(function(x, y) {
if (x < y) {
return -1;
}
if (x > y) {
return 1;
}
return 0;
});
document.getElementById("tutorial").innerHTML= array;
</script>
</body>
</html>
當指令碼執行時,它將生成一個輸出,其中包含在網頁上列印的陣列,按升序排列,這是在使用者執行指令碼時觸發事件時觸發的。
示例
在另一種情況下,指令碼正在使用自定義 sort()執行。首先,我們建立了一個包含名稱“id”和“car”的陣列。並且我們正在對名稱“car”執行排序並觀察結果。
<!DOCTYPE html>
<html>
<body>
<p id="tutorial"></p>
<script>
function sortBy(field) {
return function(a, b) {
return (a[field] > b[field]) - (a[field] < b[field])
};
}
let myArr = [
{id: 23, car: 'wagnor'},
{id: 40, car: 'dzire'},
{id: 14, car: 'swift'},
]
myArr.sort(sortBy('car'));
document.getElementById("tutorial").innerHTML=JSON.stringify(myArr);
</script>
</body>
</html>
執行上述指令碼時,將觸發事件,對名稱“car”執行排序,並顯示與不同提到的汽車相比按升序排列的陣列。
示例
讓我們看另一個示例,其中我們有一個任意排序,將順序分配給一個陣列,然後使用indexof。
<!DOCTYPE html>
<html>
<body>
<p id="tutorial"></p>
<script>
var sortOrder = ['tilak', 'bheem', 'avathar'];
var myArr = [{
name: 'avathar'
},
{
name: 'tilak'
},
{
name: 'bheem'
},
{
name: 'tilak'
}
];
myArr.sort(function(a, b) {
return sortOrder.indexOf(a.name) - sortOrder.indexOf(b.name);
});
document.getElementById("tutorial").innerHTML=JSON.stringify(myArr);
</script>
</body>
</html>
當指令碼執行時,它將生成一個輸出,其中包含在網路瀏覽器上列印的陣列,按照提供的任意排序順序排列,該順序是在觸發事件時發生的,它將按照提供的排序順序對陣列進行排序。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP