Вопрос по сортировке
Добрый день.
Подскажите пожалуйста как правильно отсортировать. Я читаю папку с файлами и мне нужно отсортировать имена файлов по порядку. import fs from 'fs'; import path from 'path'; const readDir = (dirname) => fs.readdirSync(path.resolve(dirname), 'utf8'); const d = readDir('папка с файлами').sort((a, b) => a - b); console.log(d); В итоге я получаю не отсортированный массив: [ 'Счет-фактура № 1014 от 28 февраля 2021 г.xls', 'Счет-фактура № 977 от 28 февраля 2021 г.xls', 'Счет-фактура № 990 от 28 февраля 2021 г.xls' ] А если так: const d = readDir('папка с файлами').sort((a, b) => a.localeCompare(b - a)); То [ 'Счет-фактура № 990 от 28 февраля 2021 г.xls', 'Счет-фактура № 977 от 28 февраля 2021 г.xls', 'Счет-фактура № 1014 от 28 февраля 2021 г.xls' ] |
AleBa,
.sort((a,b) => a.match(/\d+/) - b.match(/\d+/)) |
AleBa,
или так <script> let f = [ 'Счет-фактура № 1014 от 28 февраля 2021 г.xls', 'Счет-фактура № 977 от 28 февраля 2021 г.xls', 'Счет-фактура № 990 от 28 февраля 2021 г.xls' ] const collator = new Intl.Collator(["en", "ru"], { numeric: true }); f.sort(collator.compare) document.write(`<pre>${JSON.stringify(f, "", 2)}</pre>`) </script> |
Часовой пояс GMT +3, время: 06:42. |