10-数组反转和排序
8.2.7 数组反转和排序
reverse 的用法很简单,它会颠倒当前数组的顺序:
const arr = [1, 2, 3, 4, 5];
arr.reverse(); // arr is now [5, 4, 3, 2, 1]
sort 则会对当前数组进行排序:
const arr = [5, 3, 2, 4, 1];
arr.sort(); // arr is now [1, 2, 3, 4, 5]
sort 还允许指定一个排序函数,这个功能不仅方便而且好用。比如,直接对数组进行排序是没有实际意义的:
const arr = [{ name: "Suzanne" }, { name: "Jim" },
{ name: "Trevor" }, { name: "Amanda" }];
arr.sort(); // arr没有变化
arr.sort((a, b) => a.name > b.name); // arr 按照元素name属性的字母顺
//序排序
arr.sort((a, b) => a.name[1] < b.name[1]); // arr按照元素name属性的第二个字
//母的字母顺序就行排序
在这个例子中,排序函数返回一个布尔值。不过, `sort` 也接受返回值为数字的排序函数。如果返回 `0` ,则表示这两个元素“相等”,函数不改变数组的顺序。这样一来,这个方法的灵活性就很大。比如,需要对除去以字母k开头的单词按照字母顺序排序,排序的结果是所有元素按照字母顺序排列,所有以k开头的元素都在以j开头的元素后面,同时在以l开头的元素之前,但是以k开头的元素会保持它们的原始顺序。
在这个例子中,排序函数返回一个布尔值。不过, `sort` 也接受返回值为数字的排序函数。如果返回 `0` ,则表示这两个元素“相等”,函数不改变数组的顺序。这样一来,这个方法的灵活性就很大。比如,需要对除去以字母k开头的单词按照字母顺序排序,排序的结果是所有元素按照字母顺序排列,所有以k开头的元素都在以j开头的元素后面,同时在以l开头的元素之前,但是以k开头的元素会保持它们的原始顺序。