How can I sort an ES6 `Set`?

ericsoco picture ericsoco · Oct 12, 2015 · Viewed 47.9k times · Source

new Set(['b', 'a', 'c']).sort() throws TypeError: set.sort is not a function. How can I sort a Set to ensure a particular iteration order?

Answer

Benjamin Gruenbaum picture Benjamin Gruenbaum · Oct 12, 2015

A set is not an ordered abstract data structure.

A Set however always has the same iteration order - element insertion order [1], so when you iterate it (by an iterating method, by calling Symbol.iterator, or by a for.. of loop) you can always expect that.

You can always convert the set to an array and sort that.

Array.from(new Set(["b","a","c"])).sort();
[...(new Set(["b","a","c"]))].sort(); // with spread.

[1] forEach and CreateSetIterator