Intl.ListFormat: текстовое перечисление с союзами
Intl.ListFormat превращает набор строк в перечисление по правилам языка. Он полезен для текстовой подсказки о нескольких выбранных значениях без ручного соединения запятых и последнего союза.
Назначение
Intl.ListFormat превращает набор строк в перечисление по правилам языка. Он полезен для текстовой подсказки о нескольких выбранных значениях без ручного соединения запятых и последнего союза.
Как это работает
Type выбирает соединительное, разделительное или единичное перечисление. Format возвращает строку, а formatToParts разделяет исходные элементы и служебные разделители для дальнейшего аккуратного оформления.
Пример
const formatter = new Intl.ListFormat("ru", {style:"long", type:"conjunction"});
const values = ["HTML", "CSS", "JavaScript"];
const parts = formatter.formatToParts(values);
console.assert(parts.filter(part => part.type === "element").map(part => part.value).join("|") === values.join("|"));
console.assert(formatter.format([]) === "");
console.assert(formatter.format(["HTML"]) === "HTML");
console.log(formatter.format(values));
Что должно получиться
Получается локализованное перечисление; проверки подтверждают сохранность элементов и поведение пустого и одиночного списка. Точная пунктуация выбирается данными локали в среде выполнения.
Граница применения и частая ошибка
Это текстовое представление, а не замена ul или ol для структурированного списка на странице. Метод не склоняет переданные названия и не очищает HTML. Выводите пользовательские строки как текст, не вставляя результат через innerHTML.
Самостоятельная проверка
Сравните два и три элемента, затем type:"disjunction". Составьте подпись из formatToParts, сохранив разделители. Проверьте, что значения с амперсандом или угловыми скобками остаются буквальным текстом.
Пример JavaScript проверяйте в собственном учебном файле или консоли своего проекта. Встроенная песочница справочника JavaScript не выполняет. Успешное выполнение в одной среде не гарантирует поддержку метода во всех браузерах.