JavaScript数组sort()对负数排序的陷阱

本文讲述了作者在解决力扣编程题时,误用JavaScript的sort()方法对包含负数的数组排序,从而遇到问题。作者揭示了sort()方法默认按照Unicode代码点排序的特性,并推荐使用自定义比较函数确保数值排序。此外,文章还介绍了如何根据模糊搜索关键字计算权重并排序数据列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

想着好久没去力扣刷题了,刚好手上的需求也差不多了,就去看了看。看到一个难度级别为困难的题,看到这个题想着直接使用JS现成的方法,先concatsort。再取中间值不就实现了吗。是不是你们也这么想,哈哈哈。
在这里插入图片描述
就是上面的思路,果然很快,运行也通过了例子,然后提交,内心想(小菜一碟,轻松写完)。没想到却报错了吗,打脸太快。太自信也不行哇,来看看报上面错,竟然是sort方法出错了。
在这里插入图片描述

解析:

JavaScript 的 sort() 方法默认情况下是按照 Unicode 代码点进行排序的。对于数字,如果数组包含负数,直接使用 sort() 可能不会按照数值的正常顺序进行排序。就是上面的报错了,没错就是它。

示例:

let numbers = [10, 5, 7, 2, -1, -6];

numbers.sort();
console.log(numbers);
// 输出: [-1, -6, 10, 2, 5, 7]

在这个例子中,sort() 方法将数组元素转换为字符串并按照 Unicode 代码点进行排序,导致了 -1 排在 -6 前面。

为了正确排序包含负数的数组,应该使用自定义的比较函数,如下所示:

let numbers = [10, 5, 7, 2, -1, -6];

numbers.sort(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值