JavaScript – 数组 sort() 方法
JavaScript中的数组是一种用于存储一系列有序数据的数据结构。sort()是JavaScript中的一个数组方法,它可以让我们对数组进行排序。sort()方法可以接受一个可选的比较函数,用于定义排序规则。如果未指定该函数,默认情况下JavaScript会将元素转换为字符串并按照Unicode顺序进行排序。对于数字,这意味着从小到大排序。
下面我们将通过一些示例来了解sort()方法和可选比较函数的使用。
语法
sort()方法没有参数,但如果要自定义排序规则,可以传递一个比较函数作为参数。该函数应当接受两个参数,分别为要比较的数组元素,通常称为a和b。该函数应当返回一个数字:
- 如果a应该在前面,则返回小于0的数字。
- 如果b应该在前面,则返回大于0的数字。
- 如果a和b相等,则返回0。
sort()方法直接修改原始数组,并不返回新的数组。
下面是sort()方法的语法:
array.sort(compareFunction)
示例
按字母顺序排序
默认情况下,sort()方法将数组元素转换为字符串,然后按照其Unicode值进行排序。下面我们将通过一个简单的例子演示sort()方法的默认行为:
var fruits = ['apple', 'banana', 'orange', 'kiwi', 'peach'];
fruits.sort();
console.log(fruits);
运行结果:
["apple", "banana", "kiwi", "orange", "peach"]
数字排序
对于数字类型的数组元素,sort()方法默认按照Unicode值进行排序,这可能不是我们预期的结果。下面是一个示例,演示如何将数字数组按大小排序:
var numbers = [10, 5, 8, 1, 6];
numbers.sort(function(a, b) {
return a - b;
});
console.log(numbers);
运行结果:
[1, 5, 6, 8, 10]
对象排序
有时我们需要根据对象的某个属性对对象数组进行排序。下面我们将通过一个示例演示如何对对象数组按年龄进行排序:
var persons = [
{name: 'Mary', age: 23},
{name: 'John', age: 45},
{name: 'Bob', age: 12},
{name: 'Alice', age: 37}
];
persons.sort(function(a, b) {
return a.age - b.age;
});
console.log(persons);
运行结果:
[
{"name":"Bob","age":12},
{"name":"Mary","age":23},
{"name":"Alice","age":37},
{"name":"John","age":45}
]
结论
sort()方法是JavaScript中的一个有用的数组方法,它可以帮助我们对数组进行排序。如果我们需要自定义排序规则,可以使用可选的比较函数进行自定义排序。对于数字数组,我们应当将比较函数编写为返回a-b的值,以升序排序。对于对象数组,我们可以根据对象的某个属性进行排序。