Вопрос по сортировке
Добрый день.
Подскажите пожалуйста как правильно отсортировать. Я читаю папку с файлами и мне нужно отсортировать имена файлов по порядку.
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, время: 13:57. |