Array.toSorted() Sort into a new array
Last updated: 2026-10-13
Array.toSorted() Sort into a new array
toSorted returns a new sorted array and leaves the original untouched. It is the non-mutating counterpart of sort (ES2023).
| Category | Arrays |
|---|---|
| ES version | ES2023 |
📝 Syntax
const sorted = array.toSorted(compareFn);
⚙️ Parameters
| compareFn | Optional. Comparator (a, b) => number; omitted means UTF-16 string order. |
|---|
Returns:A new sorted array; the original is unchanged.
Mutates the original:No (returns a new value)
▶ Example
Edit the code, press Run, and see the result in the output panel:
Output:
[ 1, 2, 3, 10 ]
[ 3, 1, 10, 2 ]
[ 'apple', 'banana' ]
⚠️ Warning Support is much newer than sort (ES2023). For older browsers use [...arr].sort().
ℹ️ info The non-mutating family also includes toReversed / toSpliced / with.
🌐 Browser support
| Browser | |||||
|---|---|---|---|---|---|
| Array.toSorted() | ✓ v110 | ✓ v110 | ✓ v115 | ✓ v16.4 | ✓ v96 |
| Supported by all modern browsers | |||||
🏷️ Related Array Methods
💡 Related Cases
More case studies coming soon — check back later.
📚 Related Tutorials
❓ FAQ
QtoSorted vs sort?
Asort mutates in place and returns the same array; toSorted returns a new one.
QWhy does sorting [3,1,10,2] give [1,10,2,3]?
AWithout a comparator, elements are compared as strings, so "10" precedes "2". Pass (a, b) => a - b.
QWhat about older browsers?
ACopy first: [...arr].sort(...) — same effect, far better support.