Note: This site is currently "Under construction". I'm migrating to a new version of my site building software. Lots of things are in a state of disrepair as a result (for example, footnote links aren't working). It's all part of the process of building in public. Most things should still be readable though.

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

Code

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

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

console.log(initial);
console.log(new_thing);

Results

[ 'a', 'b', 'c', 'd' ]
  [ 'a', 'c', 'd', 'b' ]

** Details

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

Code

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

example.sort()
console.log(example)

Results

[ '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.