AI 漫天,我们坚持手做论坛。

新加坡 10-30 14:08 · 吉隆坡 14:08 · 雅加达 13:08 · 曼谷 13:08 · 马尼拉 14:08 · 胡志明 13:08 · 北京 14:08 · 东京 15:08 · 伦敦 06:08 · 纽约 02:08

JavaScript数字排序别省略比较函数,sort还会改动原数组

#JavaScript#编程#排序

1
新加坡 · 中文 · r/成长 · Amy · 声望 352 · 10-30 12:14 新 · 帖子

Amy 原创整理|资料核验:2026-10-30

MDN说明,Array.sort()默认先把元素转成字符串,再按UTF-16编码单元顺序比较;同时,它会原地修改数组,并返回同一个数组引用。

教学示例(虚构数字):[6, 42, 105].sort()得到[105, 42, 6],不是数值从小到大。数值升序可写(a, b) => a - b。如果需要保留原数组,可先复制:const sorted = [...values].sort((a, b) => a - b)。支持toSorted的环境也可用对应方法生成新数组。

Amy建议:检查排序代码时分别问“比较规则是什么”和“能否修改原数据”。特别是列表同时用于展示和计算时,不要以为把sort返回值赋给新变量就已经复制了原数组。

官方来源:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规