Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.03.2021, 14:30
Интересующийся
Отправить личное сообщение для AleBa Посмотреть профиль Найти все сообщения от AleBa
 
Регистрация: 13.06.2020
Сообщений: 18

Вопрос по сортировке
Добрый день.
Подскажите пожалуйста как правильно отсортировать.
Я читаю папку с файлами и мне нужно отсортировать имена файлов по порядку.
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'
]
Ответить с цитированием
  #2 (permalink)  
Старый 16.03.2021, 15:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

AleBa,
.sort((a,b) => a.match(/\d+/) - b.match(/\d+/))

Последний раз редактировалось рони, 16.03.2021 в 15:58.
Ответить с цитированием
  #3 (permalink)  
Старый 16.03.2021, 16:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос про возможности JS для рисования и анимации macdack Библиотеки/Тулкиты/Фреймворки 3 15.07.2011 00:13
Я как ответить на вопрос - есть ли жизнь на других планетах? TicTac Оффтопик 5 28.04.2011 04:29
Вопрос авторизации. 0931454574 Серверные языки и технологии 8 12.04.2011 11:09
Вопрос на миллион. Ajax и идентификация по адресной строке. 0931454574 AJAX и COMET 5 31.03.2011 11:54
Вопрос по замыканиям Goodfella Общие вопросы Javascript 20 09.03.2011 01:21