TGViewer
Node.js Recipes Node.js Recipes @node_recipes · 3.1K subscribers
Post #751 4.84K
Як сортувати рядки?

Більшість із вас знають, що для сортування рядків у JavaScript існує localeCompare. Дозволяє легко відсортувати рядки. Приклад:
names.sort((a, b) => a.localeCompare(b));

Приклад з урахуванням локалі
names.sort((a, b) => a.localeCompare(b, 'uk'));

Приклад для сортування рядків, що містять числа, у більш зрозумілий для людини спосіб:
["a2", "a10", "a1"].sort((a, b) => a.localeCompare(b, undefined, { numeric: true }))
// Result: [ 'a1', 'a2', 'a10' ]

Взагалі, у третього аргументу Intl.CollatorOptions, крім numeric, є ще 6 можливих ключів, і знати їх напам’ять, звісно, ніхто не буде. Але давайте ще раз їх повторимо:
👉 caseFirst: Контролює позицію великих і малих літер у порядку сортування. Значення:
• "upper": Сортує великі літери перед малими (наприклад, “А” перед “а”).
• "lower": Сортує малі літери перед великими (наприклад, “а” перед “А”).
• "false" (значення за замовчуванням): Використовується порядок за замовчуванням для локалі.
👉 ignorePunctuation. Тип: boolean.  Корисно, коли потрібно порівнювати рядки, де пунктуація не повинна впливати на результат. Значення:
• true: Ігнорує пунктуацію під час порівняння.
• false (значення за замовчуванням): Враховує пунктуацію.
👉 sensitivity. Контролює, наскільки детальним є порівняння з точки зору регістру, акцентів і базових символів. Значення:
• "base": Враховує лише базові літери (“а” і “А” вважаються рівними).
• "accent": Враховує акценти, але ігнорує регістр (“é” і “e” різні, але “e” і “E” вважаються рівними).
• "case": Враховує регістр, але ігнорує акценти (“а” і “А” різні, але “а” і “ä” вважаються рівними).
• "variant": Враховує як регістр, так і акцентні відмінності (“а”, “А”, “ä” і “Ä” всі різні).
👉 usage. Визначає, чи оптимізовано порівняння для пошуку або сортування. Використовується з new Intl.Collator, а не localeCompare.
👉 localeMatcher. Визначає, як вибирається локаль, якщо ви вказали декілька локалей.
👉 collation. Зазвичай використовується для специфічних мов або застосунків, які потребують певної колації, але в більшості випадків це не є необхідним.

На завершення нагадаю, що сортування на рівні коду — це завдання для FE/BFF. У чистому BE сортування виконується на рівні бази даних. Для сортування за локаллю у нас є COLLATE. Приклад:
SELECT * FROM table_name ORDER BY column_name COLLATE "en_US";
Але якщо вам потрібні аналоги CollatorOptions, то SQL такого на жаль не має.
  • 👍 57
  • ❤ 5
  • 🤝 2
More from @node_recipes
  1. Jan 5, 2026По всьому світу проходять Cursor Meetups, де локальні спільноти діляться досвідом використ…
  2. Jan 5, 2026Думки на вихідних: Full Stack Learning Подивився останнє відео Сергія Немчинського про фул…
  3. Dec 31, 2025Залишаються лічені години 2025-го. І будьмо чесними: сам перехід на 2026-й нічого автомати…
  4. Dec 25, 2025Моє відкриття 2025 року, як доповідача, це Napkin.ai. На малюнку приклад того, як Napkin г…
  5. Dec 23, 2025А ось й ChatGPT додав 2025 review feature. Авжеж в мене half coded Nest.js app, як ще :)
  6. Dec 23, 2025Моє технічне відкриття 2025 року — centrifugal.dev У 2025-му я багато працював із реальним…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →