📜  js 排序字符串数组 - Javascript (1)

📅  最后修改于: 2023-12-03 15:17:02.289000             🧑  作者: Mango

JS 排序字符串数组 - Javascript

在 JavaScript 中进行排序是一个常见的任务,尤其是在处理字符串数组时。本文将介绍如何使用 JavaScript 对字符串数组进行排序。

JavaScript 中的排序方法

JavaScript 中有两种排序方法:sort()localeCompare()

Array.sort()

sort() 方法是 JavaScript 中内置的方法。它将在原地排序数组,并返回排序后的数组。

语法:

arr.sort([compareFunction])

其中,compareFunction 是一个可选的函数,用于指定排序时的比较规则。

如果不指定 compareFunctionsort() 方法将默认按照 Unicode 编码的顺序进行排序。这意味着,如果排序的数组中包含小写字母、大写字母和数字等元素,它们将按照以下顺序排序:

  1. 数字 0-9
  2. 大写字母 A-Z
  3. 小写字母 a-z

例如,对于下面的数组:

const fruits = ['banana', 'cherry', 'apple'];

使用默认的 sort() 方法进行排序,结果如下:

fruits.sort(); // ['apple', 'banana', 'cherry']

如果您想按照特定的规则进行排序,可以使用 compareFunction 参数。 compareFunction 应该返回负数、零或正数,以指定比较的顺序。这些值被解释为:

  • 一个负数表示:第一个参数小于第二个参数
  • 零表示:两个参数相等
  • 一个正数表示:第一个参数大于第二个参数

例如,如果要按照字符串长度进行排序:

const fruits = ['banana', 'cherry', 'apple'];
fruits.sort(function(a, b) {
  return a.length - b.length;
}); // ['apple', 'banana', 'cherry']
String.localeCompare()

localeCompare() 方法用于比较两个字符串,并返回一个整数,表示它们之间的关系。这个方法比 sort() 更灵活,可以根据本地化规则进行排序。

语法:

str1.localeCompare(str2)

其中,str1str2 是要进行比较的两个字符串。

localeCompare() 方法返回值如下:

  • 如果 str1 小于 str2,则返回一个负整数。
  • 如果 str1 等于 str2,则返回 0。
  • 如果 str1 大于 str2,则返回一个正整数。

例如,对于下面的数组:

const fruits = ['バナナ', 'りんご', 'チェリー'];

如果使用默认的 sort() 方法进行排序:

fruits.sort(); // ['バナナ', 'チェリー', 'りんご']

这可能不是您想要的结果,因为排序不考虑日语的音节排序。为了按照正确的顺序排序,我们可以使用 localeCompare() 方法:

const fruits = ['バナナ', 'りんご', 'チェリー'];
fruits.sort(function(a, b) {
  return a.localeCompare(b);
}); // ['りんご', 'バナナ', 'チェリー']
总结

本文介绍了两种 JavaScript 中的排序方法:sort()localeCompare()。使用 sort() 方法可以在大多数情况下对字符串数组进行排序。如果您需要更精确的排序方法,请使用 localeCompare()

参考