javascript sort 函数用法

本文详细解析了JavaScript中sort()函数的基本用法及参数设定,包括无参数时的默认升序排列,以及如何通过compare函数自定义排序规则,实现数组元素的灵活排序。

sort 函数

简单的说,sort() 在没有参数时,返回的结果是按升序来排列的。即字符串的Unicode码位点(code point)排序

1 [5, 2, 4, 1, 3].sort();
2 // [1, 2, 3, 4, 5]
3 
4 // 数字字符串也是从小到大
5 ['5', '2', '4', '1', '3'].sort();
6 // ['1', '2', '3', '4', '5']

如果指明了参数:compare(a, b) ,(a, b 是两个要比较的元素,a 在 b 前面)那么数组会按照该函数的返回值排序

- 如果 compare(a, b) 返回值 < 0 ,a 会被排列到 b 之前,即参数a, b的顺序保存原样;

- 如果 compare(a, b) 返回值 = 0 ,a 和 b 的相对位置不变。(ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守)

- 如果 compare(a, b) 返回值 > 0 ,b 会被排列到 a 之前。即交换参数a, b的顺序

> 记:大于 0 交换顺序

### JavaScript 中 `sort()` 函数用法 `sort()` 方法用于对数组元素进行排序,并返回已排序的数组[^1]。此方法会直接修改原始数组,不会创建新的副本。 #### 对纯字符串数组排序 当处理仅包含字符串的数组时,默认情况下 `sort()` 将按字母升序排列这些项: ```javascript let myArray = ["people", "person", "apple", "ziv"]; console.log(myArray.sort()); // 输出 ['apple', 'people', 'person', 'ziv'] ``` 上述代码展示了如何简单调用 `sort()` 来对字符串类型的数组成员执行默认排序逻辑。 #### 自定义比较函数 为了更灵活地控制排序行为,比如基于数值大小而非字符编码顺序,或者降序而不是升序,则需向 `sort()` 提供一个比较器回调函数作为参数。该函数接收两个待比较的元素 a 和 b ,并应返回一个小于零、等于零或大于零 的数以指示它们之间的相对位置关系: - 如果 compareFunction(a, b) 返回小于 0 的值,则将 a 排列到 b 前面; - 如果 compareFunction(a, b) 返回 0,则保持原有次序不变; - 如果 compareFunction(a, b) 返回大于 0 的值,则把 b 放置在 a 后面; 下面是一个例子,它实现了数字从小到大排序的功能: ```javascript const numbers = [4, 2, 5, 1]; numbers.sort((a, b) => a - b); console.log(numbers); // 输出 [1, 2, 4, 5] ``` 这里通过传递 `(a, b) => a - b` 给 `sort()` 实现了自然数序列化排序。 为了避免意外更改原数据结构,在某些场景下可能希望先复制一份再做变换。可以通过扩展运算符 (`...`) 或者 `.slice()` 方法来完成深拷贝操作后再应用 `sort()`. 如下所示: ```javascript // 使用扩展运算符... const originalList = [7, 9, 3, 8]; const sortedCopy = [...originalList].sort((a, b) => a - b); // 或者使用 slice() const anotherSortedCopy = originalList.slice().sort((a, b) => a - b); ``` 这样做可以确保原始列表不受影响[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值