Выбор ответа Middle Разминка: короткие функции обновлено
Разворот строки с эмодзи
Вопрос
Какая функция корректно развернёт строку 'ок😀', не сломав эмодзи?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: (s) = [...s].reverse().join(''). split('') делит строку по 16-битным единицам UTF-16, и эмодзи, занимающий суррогатную пару, распадается на две половинки; после разворота пара окажется в обратном порядке и станет мусором.
Варианты ответа
(s) => s.split('').reverse().join('')(s) => s.split('').sort().join('')(s) => s.toReversed()(s) => [...s].reverse().join('')правильный ответ
Разбор
split('') делит строку по 16-битным единицам UTF-16, и эмодзи, занимающий суррогатную пару, распадается на две половинки; после разворота пара окажется в обратном порядке и станет мусором. Spread использует итератор строки, который идёт по кодовым точкам, и эмодзи остаётся целым. У строк нет метода toReversed, он есть только у массивов. sort вообще не разворачивает, а сортирует символы. Для составных эмодзи (флаги, семьи) нужен Intl.Segmenter.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.