You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript合并两个有序数组后调用sort()排序结果异常如何解决

问题原因

JavaScript 内置的sort()方法默认采用字符串Unicode码点顺序排序,不会按数字的数值大小比较。数组中的数字会被先转为字符串再做对比,比如'100'的首字符'1'的Unicode编码小于'2'的编码,所以排序后100会出现在2前面,和预期的数字升序结果不符。

修复方案

给sort()传入数字比较回调函数即可实现数值排序,升序逻辑返回a - b,降序逻辑返回b - a:

arr1 = [2,6,8,56,78,99,100];
arr2 = [1,4,6,8,9,99];
arr3 = arr1.concat(arr2);
// 传入数值比较函数实现升序排序
arr3.sort((a, b) => a - b);
console.log(arr3);
// 输出结果:[1,2,4,6,6,8,8,9,56,78,99,99,100]

内容的提问来源于stack exchange,提问作者Dumpling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:15:04