如何在 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>
当脚本运行时,它将生成一个输出,其中包含在网络浏览器上打印的数组,按照提供的任意排序顺序排列,该顺序是在触发事件时发生的,它将按照提供的排序顺序对数组进行排序。
广告