JavaScript 数组 sort() 方法详解

在 JavaScript 中,我们使用 sort() 方法来对数组中的元素进行排序,通常是按照字母顺序或升序排列。值得注意的是,这个方法会直接修改原始数组,并返回排序后的结果。

  • 默认情况下按字母顺序对元素进行排序(将其视为字符串)
  • 直接修改原始数组,而不是创建一个新的数组副本
  • 我们可以使用比较函数来实现自定义排序(例如对数字进行排序)

对字符串数组进行排序

JavaScript


CODEBLOCK_3d202948

语法

arr.sort(compareFunction);

参数

  • arr:需要被排序的数组。
  • compareFunction (可选):用来定义排序顺序的函数。如果省略该参数,数组元素将根据其字符串的 Unicode 码点值进行排序。

返回值:该方法返回排序后的原始数组的引用。

在 JavaScript 中对数值数组进行排序

升序排列

无论数组元素是字符串还是数字,Array.sort() 默认都会按照字典顺序(lexicographical order)对元素进行排序。

JavaScript


CODEBLOCK_ddcb4bb1

> 需要注意的是,JavaScript 中 sort() 的排序方式与 C++、Java 和 Python 等语言有所不同。它是将数组元素作为字符串按字母顺序进行比较,而不是作为数字。这就导致元素是根据字符的 Unicode 值进行排序,而非按照我们期望的数值大小顺序。

为了正确地对数值数组进行排序,我们需要传入一个比较器函数。

JavaScript


CODEBLOCK_38c8a023

降序排列

我们可以通过调整比较器函数的逻辑,来让数组按降序排列。

JavaScript


CODEBLOCK_2bbd9d32

建议阅读这篇文章 How to Sort Numeric Array using JavaScript?,以深入了解 JavaScript 数组排序函数的工作原理。

对字符串数组进行反向排序

在比较器函数中,我们可以利用 string.localeCompare() 方法来实现反向排序。

JavaScript


CODEBLOCK_9818417a

当然,我们也可以结合使用 array.reverse() 方法,先将数组排序,再将其逆序,从而实现降序排列。

JavaScript


CODEBLOCK_39165800

Output

[ ‘JS‘, ‘HTML‘, ‘CSS‘ ]

对对象数组进行排序

我们可以根据对象数组的属性值来对其进行排序。

JavaScript


CODEBLOCK_733e143b

排序的稳定性

排序的稳定性是指,当我们在对列表进行排序时,如果两个项目的值相等,它们在列表中的相对顺序应该保持在原始列表中的顺序。一个稳定的排序算法会保持相等元素的原始顺序不变。

> 注意:在 ECMAScript 2019(第 10 版)之前,JavaScript 的 sort() 方法并不保证排序的稳定性,这意味着在排序后,相等元素的原始顺序可能会发生改变。

JavaScript


CODEBLOCK_0cf0adb5

这篇文章详细解释了 JavaScript sort() 的排序稳定性。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/49247.html
点赞
0.00 平均评分 (0% 分数) - 0