'use strict'; module.exports = function (items, comparator) { comparator = comparator ? comparator : (a, b) => { if (a < b) return -1; if (a > b) return 1; return 0; }; let stabilizedItems = items.map((el, index) => [el, index]); const stableComparator = (a, b) => { let order = comparator(a[0], b[0]); if (order != 0) return order; return a[1] - b[1]; }; stabilizedItems.sort(stableComparator); for (let i = 0; i < items.length; i++) { items[i] = stabilizedItems[i][0]; } return items; };