Вы можете сделать это, используя метод String#localeCompare()
, например:
let array = ['abc', 'def', 'aef', 'gfh']
array.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
console.log(array)
array = ['123', '456', '192', '412', '5']
array.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
console.log(array)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Как уже упоминалось в документах , для сортировки чисел c нам просто нужно использовать параметр {numeric: true}
.
// by default, "2" > "10"
console.log(["2", "10"].sort((a,b) => a.localeCompare(b))); // ["10", "2"]
// numeric using options:
console.log(["2", "10"].sort((a,b) => a.localeCompare(b, undefined, {numeric: true})));
// ["2", "10"]