JavaScript的数组排序

文章介绍了JavaScript中数组的sort方法用于数字和字符串排序的基本用法,包括升序、降序排序,以及如何通过自定义比较函数实现复杂排序规则,如按首字母的元音字母顺序排序。同时提到了localeCompare方法在字符串排序中的应用。
摘要由CSDN通过智能技术生成

JavaScript中的数组排序方法可以用于对数组进行数字排序、字符串排序或按照自定义规则排序。

数字排序

升序排序

要对数组进行数字升序排序,可以使用sort方法,通过比较函数来指定排序规则。比较函数应该返回一个负数、零或正数,表示两个元素的相对顺序。如下所示:

const arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
arr.sort((a, b) => a - b);
console.log(arr);  // 输出 [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

降序排序

要对数组进行数字降序排序,可以在比较函数中交换ab的位置,如下所示:

arr.sort((a, b) => b - a);
console.log(arr);  // 输出 [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

字符串排序

对于字符串排序,sort方法默认按照字母顺序进行排序。需要注意的是,它是按照Unicode码点进行排序的,而不是按照字母表顺序。如下所示:

const arr = ['apple', 'Banana', 'cherry', 'dates', 'Elderberry'];
arr.sort();
console.log(arr);  // 输出 ["Banana", "Elderberry", "apple", "cherry", "dates"]

如果需要按照字母表顺序排序,可以使用localeCompare方法,如下所示:

arr.sort((a, b) => a.localeCompare(b));
console.log(arr);  // 输出 ["apple", "Banana", "cherry", "dates", "Elderberry"]

localeCompare方法会返回一个负数、零或正数,表示两个字符串的相对顺序。如果字符串a应该排在b前面,则返回负数;如果字符串a应该排在b后面,则返回正数;如果两个字符串相等,则返回零。

自定义规则排序

要按照自定义规则对数组进行排序,可以在比较函数中指定排序规则。以下是一个例子,按照字母表顺序排序(不区分大小写),但是把所有以元音字母开头的单词排在其他单词的前面:

const arr = ['apple', 'Banana', 'egg', 'cherry', 'orange', 'Dates'];
arr.sort((a, b) => {
  const firstLetterA = a[0].toLowerCase();
  const firstLetterB = b[0].toLowerCase();
  const vowels = ['a', 'e', 'i', 'o', 'u'];
  const isAVowelA = vowels.includes(firstLetterA);
  const isAVowelB = vowels.includes(firstLetterB);

  if (isAVowelA && !isAVowelB) {
    return -1;
  } else if (!isAVowelA && isAVowelB) {
    return 1;
  } else {
    return a.localeCompare(b);
  }
});
console.log(arr);  // 输出 ["apple", "egg", "Banana", "cherry", "Dates", "orange"]

在比较函数中,首先获取两个字符串的首字母,并将它们转换成小写字母。然后,判断它们是否为元音字母。如果a以元音字母开头,而b不是,则返回负数,表示a应该排在b前面。如果b以元音字母开头,而a不是,则返回正数,表示a应该排在b后面。否则,按照字母表顺序排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值