home ~ projects ~ socials

Sort An Array Without Mutating The Initial Array In JavaScript

TL;DR

This is how to get a sorted copy of an array without changing the original one in JavaScript

const initial = ['a', 'c', 'd', 'b'];

const new_thing = Array.from(initial).sort();

console.log(initial);
console.log(new_thing);
Output:
[ 'a', 'b', 'c', 'd' ]
  [ 'a', 'c', 'd', 'b' ]

Details

Calling .sort() directly on an array alters it to have the sorted ordering. For example:

const example = ['a', 'c', 'd', 'b'];
console.log(example)

example.sort()
console.log(example)
Output:
[ 'a', 'c', 'd', 'b' ]
  [ 'a', 'b', 'c', 'd' ]

That's generally what I'm after but there are times when I need the original ordering to stay intact. The code at the top of the post does that by making a new array from the values in the first array and then sorting off that.

#+NOTES:

- I use this for arrays of strings. Dealing with arrays of object might take more work.

-- end of line --