Символы Unicode (кодовые точки), не входящие в базовую многоязычную плоскость (BMP), могут состоять из двух символов (единиц кода), называемых суррогатной парой.
«ab» — это две кодовые единицы и две кодовые точки. (Таким образом, два символа и два символа.)
«a????» — это три кодовые единицы и две кодовые точки. (То есть три символа и два символа.)
Мой код не должен работать со старыми версиями JavaScript. ES6 или что-то более современное.
Как я могу получить доступ к последнему персонажу, независимо от того, является ли он астральным персонажем или нет?
Разделение строки на «все, кроме последнего символа» и «последний символ» также допустимо.
String
перебирает кодовые точки, а не символы JavaScript (кодовые единицы), и поэтому он распределяет строку по кодовым точкам в массиве, а затем выбирает последнюю из массива черезpop
. - person T.J. Crowder   schedule 11.07.2017Array.from('a????')
или'a????'.match(/.$/u)
. - person hippietrail   schedule 11.07.2017