如何在 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