Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 76 из 114 · 8 мин
normalize, isWellFormed, toWellFormed и localeCompare для сортировки по алфавиту.
Два одинаковых «café» не равны! Один из них я собрал из «e» и отдельного ударения.
Юникод позволяет записать один символ по-разному. normalize приводит к одному виду.
normalize()str.normalize("NFC") собирает символ с диакритикой в одну кодовую точку; NFD — раскладывает.const a = "caf\u00e9", b = "cafe\u0301";
console.log(a === b, a.normalize() === b.normalize());isWellFormed() · toWellFormed()toWellFormed() заменяет такие куски на «�».const broken = "чай\uD83C";
console.log(broken.isWellFormed(), broken.toWellFormed());localeCompare()a.localeCompare(b, "ru") — отрицательное, 0 или положительное число. Правильно сортирует «ё», регистр и акценты.const names = ["ёлка", "Яна", "ель", "Борис"];
console.log([...names].sort(), [...names].sort((a, b) => a.localeCompare(b, "ru")));Сортируешь слова для людей — только localeCompare, обычный sort() сравнивает коды.
Напиши sortGuests(names): новый массив, отсортированный по-русски через localeCompare; и same(a, b) — равны ли строки после normalize().
Выберите один ответ.
Как правильно отсортировать русские имена?
Выберите один ответ.
Зачем normalize()?
Проверяем состояние обучения…