Добавление порядковых суффиксов к числам в JS: исключения и циклы

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вам требуется функция, призванная динамически приписывать английские порядковые суффиксы (st, nd, rd, th) к числам, то ваш поиск завершён:

JS
Скопировать код
function addOrdinal(n) {
  var s = ["th", "st", "nd", "rd"],
      v = n % 100;
  return n + (s[(v – 20) % 10] || s[v] || s[0]);
}

console.log(addOrdinal(1));   
console.log(addOrdinal(2));   
console.log(addOrdinal(3));   
console.log(addOrdinal(11));  
console.log(addOrdinal(22));  
console.log(addOrdinal(123));

Приведенная выше функция соотносит последние цифры числа с соответствующими суффиксами, принимая во внимание возникающие исключения. Используйте addOrdinal, чтобы корректно порядково обозначать числа.

Кинга Идем в IT: пошаговый план для смены профессии

Продвинутое использование и особые случаи

Давайте углубимся в функцию addOrdinal и узнаем больше о её возможностях!

Учёт отрицательных чисел

Отрицательные числа вполне могут быть преобразованы в порядковые:

JS
Скопировать код
function addOrdinal(n) {
  let absValue = Math.abs(n);
  ...
  return (n < 0 ? "-" : "") + absValue + (s[(absValue – 20) % 10] || s[absValue] || s[0]);
}

Современный синтаксис

JS
Скопировать код
const addOrdinal = n => {
  const s = ["th", "st", "nd", "rd"];
  const v = n % 100;
  return `${n}${s[(v-20)%10] || s[v] || s[0]}`;
};

Интеграция с moment.js

JS
Скопировать код
moment.localeData().ordinal(n);

moment.js позволит вашему коду взаимодействовать на любом языке.

Визуализация

Наглядно представляем "бал чисел", где каждый участник (число) получает индивидуальный значок:

Markdown
Скопировать код
Знакомство с участниками:
1 👤 – "1-й" 🏅
2 👤 – "2-й" 🎖️
3 👤 – "3-й" 🥉
4 👤 – "4-й" 🏷️
... и так далее.
Markdown
Скопировать код
Логика значков:
- Заканчивается на "1": 🏅 (за исключением "11")
- Заканчивается на "2": 🎖️ (за исключением "12")
- Заканчивается на "3": 🥉 (за исключением "13")
- Все прочие: 🏷️

Наглядная визуализация помогает лучше освоить логику функции.

Глубокое изучение особых случаев

Особые случаи подчеркивают изящество поправки:

Локализация суффиксов

Функцию можно расширить для поддержки различных языков, так как кодирование универсально.

Производительность

Необходимо обеспечивать высокую скорость выполнения кода с точки зрения использования памяти и времени обработки CPU.

Тестирование с большими числами

Важность использования очень больших чисел заключается в том, что это может стать хорошей проверкой на прочность функции.

Полезные материалы

  1. Справочник JavaScript – JavaScript | MDN — это подробный источник информации о синтаксисе и использовании JavaScript.
  2. Как добавить порядковые суффиксы к числам – Stack Overflow — это утвержденные сообществом решения для работы с порядковыми суффиксами.
  3. ECMA-262 – Ecma International — официальная спецификация ECMAScript, подробно описывающая взаимодействие с числами и строками.
  4. Порядковые числа в JavaScript · GitHub — здесь можно найти полезную функцию на JavaScript для добавления суффиксов.
  5. Методы обработки строк JavaScript — руководство, посвященное методам работы со строками.