localeCompare() 方法

localeCompare() 方法比较当前语言环境中的两个字符串。
它返回一个数字,该数字指示元素是在排序顺序中出现在给定字符串之前、之后还是等于给定字符串。

sort() 方法

sort() 方法对数组元素进行原地排序并返回排序后的数组。
默认情况下,排序顺序是升序,建立在将元素转换为字符串,然后比较它们的 UTF-16 代码单元值序列的基础上。
数字排序可能不正确,因为 sort() 方法按以下顺序对数字进行排序:“35”大于“225”,因为“3”大于“2”。

如何在 JavaScript 中按字母顺序对数组进行排序

JavaScript 数组有 sort() 方法,它按字母顺序对数组元素进行排序。

sort() 方法接受一个函数,该函数比较 Array.sort([comparer]) 的两个项目。

let elements = ['Javascript', 'Css', 'Html'];
elements.sort(function (a, b) {
  return a.length - b.length;
});
console.log(elements);

sort() 方法将根据元素的值对项目进行排序,以防比较函数被省略:

  • 如果比较值小于零,sort() 方法将排序到比 b 低的索引。
  • 如果比较值大于零,sort() 方法将 b 排序到比 a 低的索引。
  • 如果比较返回零,则 sort() 方法认为 a 等于 b 并且不改变它们的位置。

假设你有两个元素 a 和 b 并且想要比较 a.firstname 和 b.firstname,那么操作如下:

a = {
  firstname: 'John'
};
b = {
  firstname: 'Jack'
};
users = [a, b];
users.sort(function (a, b) {
  if (a.firstname < b.firstname) {
    return -1;
  }
  if (a.firstname > b.firstname) {
    return 1;
  }
  return 0;
})
 console.log(users);

如果比较字符串包含 Unicode 字符,我们可以使用 localeCompare 函数,该函数内置支持特定于语言的排序顺序、忽略大小写、变音符号、ß 等符号:

let elements = ['Javascript', 'Css', 'Html'];
arr = elements.sort((a, b) => a.localeCompare(b));
console.log(arr);
日期:2020-06-02 22:16:26 来源:oir作者:oir