Array.prototype.map()
to pair each element of the input array with its corresponding index.Array.prototype.sort()
and a compare
function to sort the list, preserving their initial order if the items compared are equal.Array.prototype.map()
to convert back to the initial array items.const stableSort = (arr, compare) =>
arr
.map((item, index) => ({ item, index }))
.sort((a, b) => compare(a.item, b.item) || a.index - b.index)
.map(({ item }) => item);
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; const stable = stableSort(arr, () => 0); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Subscribe to get resources directly to your inbox. You won't receive any spam! ✌️