Array.toSorted() 排序并返回新数组

最后更新:2026-10-13

Array.toSorted() 排序并返回新数组

toSorted 返回排序后的新数组,原数组保持不变。它是 sort 的非破坏性版本(ES2023 新增),在不希望修改原数据的场景更安全。

分类数组
ES 版本ES2023

📝 语法

const 新数组 = 数组.toSorted(比较函数);

⚙️ 参数

compareFn可选。比较函数 (a, b) => 数字;省略时按字符串 UTF-16 顺序排序。

返回值:排序后的新数组,原数组不变。

是否修改原值:否(返回新值)

▶ 示例

编辑下方代码,点击运行,在输出面板查看结果:

运行结果:

[ 1, 2, 3, 10 ]
[ 3, 1, 10, 2 ]
[ 'apple', 'banana' ]
⚠️ 警告 浏览器兼容性比 sort 差得多(2023 年才进标准)。要兼容旧浏览器请用 [...arr].sort()。
ℹ️ info 同为非破坏性版本的还有 toReversed / toSpliced / with,统称"拷贝版数组方法"。

🌐 浏览器支持

浏览器 ChromeChrome EdgeEdge FirefoxFirefox SafariSafari OperaOpera
Array.toSorted() ✓ v110 ✓ v110 ✓ v115 ✓ v16.4 ✓ v96
所有现代浏览器均支持
更多实战案例即将上线,敬请期待。

📚 相关教程

❓ 常见问题

QtoSorted 和 sort 的区别?
Asort 原地修改原数组并返回它;toSorted 返回新数组,原数组不动。
Q为什么 [3,1,10,2] 直接排序结果是 [1,10,2,3]?
A省略比较函数时按字符串比较,"10" 排在 "2" 前面。数字排序必须传 (a, b) => a - b。
Q旧浏览器怎么办?
A用展开运算符复制再排序:[...arr].sort(...),效果等同且兼容性更好。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏