JavaScript中对数组进行排序

Array.sort()

Posted by cl9000 on June 19, 2020

每天做一件自己害怕的事。——<埃莉诺·罗斯福>

作者:Ashish Lahoti
译者:cl9000
来源:https://codingnconcepts.com/javascript/how-to-sort-array-in-javascript/

在本教程中,我们将学习如何使用Array.sort()方法对JavaScript中的数组进行排序。

1. 字符串数组排序

让我们创建一个字符串数组:

1
const fruits = ['mango', 'cherry', 'berries', 'apple', 'banana', 'kiwi'];

我们可以使用以下方法以字母(AZ,AZ)的升序对数组元素进行排序sort():

1
2
fruits.sort();
console.log(fruits);

Output
▶ (6) [“apple”, “banana”, “berries”, “cherry”, “kiwi”, “mango”]

我们还可以使用以下方法按字母降序(za,ZA)对数组元素进行排序reverse():

1
2
fruits.reverse();
console.log(fruits);

Output
▶ (6) [“mango”, “kiwi”, “cherry”, “berries”, “banana”, “apple”]

2. 排序编号数组

内置 sort()reverse()方法按字母顺序对数组元素进行排序,因此在涉及数字数组时,它没有用。幸运的是,sort() 方法将compare 函数作为参数,可以用来覆盖其默认排序行为。

首先创建比较函数:

比较功能

1
function(a, b) {return a - b}

当该sort()方法比较两个值时,它将这些值发送到我们的compare函数,并根据返回的值对这些值进行排序。

  • 如果结果是否定的,则a排在b之前。
  • 如果结果是肯定的,则b在a之前排序。
  • 如果结果为0,则没有任何变化。

让我们使用带有 compare 函数的数字数组升序排序 sort()

1
2
3
4
const numbers = [1, 7, 3, 5, 8, 2, 9, 4, 6];

numbers.sort(function(a, b){return a - b}); //ascending
console.log(numbers);

Output
▶ (9) [1, 2, 3, 4, 5, 6, 7, 8, 9]

我们需要扭转从减法(A - B)以(B - A)的比较功能,如果我们想在分类编号递减顺序:

1
2
3
4
const numbers = [1, 7, 3, 5, 8, 2, 9, 4, 6];

numbers.sort(function(a, b){return b - a}); //descending
console.log(numbers);

Output
▶ (9) [9, 8, 7, 6, 5, 4, 3, 2, 1]

参考

关注【公众号】,了解更多。
关注【公众号】,了解更多。
关注【公众号】,了解更多。



支付宝打赏 微信打赏

赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!