JavaScript的sort函数

JavaScript 的 `Array.prototype.sort()` 方法用于对数组的元素进行排序,并返回排序后的数组。默认情况下,`sort` 方法将数组元素转换为字符串,并按照字符串的Unicode码点顺序进行排序。这意味着即使数组中的元素是数字,它们也会被先转换成字符串,然后再比较它们的字典序,这可能会导致非直观的排序结果。为了实现更复杂的排序逻辑,`sort` 方法可以接受一个可选的比较函数作为参数。

基本使用

默认排序(将元素视为字符串):

const fruits = ['Banana', 'Orange', 'Apple', 'Mango'];
fruits.sort();
console.log(fruits); // 输出: ['Apple', 'Banana', 'Mango', 'Orange']

数值排序(使用比较函数):

const numbers = [40, 100, 1, 5, 25];
numbers.sort((a, b) => a - b);
console.log(numbers); // 输出: [1, 5, 25, 40, 100]

比较函数

比较函数应该接受两个参数(我们通常称之为`a`和`b`),并根据以下规则返回一个值来确定它们的排序顺序:

- 如果返回值 小于 0,则将`a`排在`b`之前。
- 如果返回值 大于 0,则将`b`排在`a`之前。
- 如果返回值 等于 0,则`a`和`b`的相对位置不变

示例(假设我们想根据字符串长度对数组进行排序)

const items = ['Banana', 'Orange', 'Apple', 'Mango'];
items.sort((a, b) => a.length - b.length);//从小到大排序
console.log(items); // 输出: ['Apple', 'Mango', 'Banana', 'Orange']

注意

- JavaScript的sort方法会就地对数组进行排序,也就是说,原数组会被修改
- 对于数值排序,直接使用默认排序可能会得到错误的结果,因此建议总是为数值排序提供一个比较函数。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript的匿名函数sort()是用于对数组进行排序的方法。它可以按照默认的字典顺序进行排序,也可以接收一个自定义的比较函数作为参数,通过该函数的返回值来决定数组的排序顺序。比较函数的返回值大于0时,会交换两个参数的位置;返回值小于0时,不会交换两个参数的位置。 当对纯字符串数组进行排序时,sort()方法会按照字符的顺序进行排序,而不是按照元素的数值大小进行排序。例如,对于数组["people","person","apple","ziv"],使用sort()方法排序后的结果是["apple", "people", "person", "ziv"]。 而当对混合类型数组进行排序时,sort()方法同样会按照字典顺序进行排序。例如,对于数组[1,2,'dwef',3, ,'ffff',undefined,5,NaN,9999999999999999999999],使用sort()方法排序后的结果是[1, 1e22, 2, 3, 5, NaN, 'dwef', 'ffff', undefined, <1 empty item>],其中NaN排在字符串前面,undefined排在数字之后,而空项则排在最后。 总之,通过匿名函数sort(),我们可以方便地对JavaScript数组进行排序,并且可以根据需要自定义排序规则。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [JavaScript 数组排序函数sort()的使用](https://blog.csdn.net/oiooio11/article/details/122169843)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值