Что это значит, что Array.prototype.sort "[сравнивает] строки в порядке кодовых единиц UTF-16"? - PullRequest
0 голосов
/ 07 октября 2019

Я изучаю Array.prototype.sort () в Javascript, а в https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort это объясняет, что если не передан аргумент сравнение функции , он преобразует значения встрок и сравнивайте их в порядке кодовых единиц UTF-16.

Например,

"2" > "15" => true

Может кто-нибудь объяснить мне, как это утверждение верно, используя кодовые единицы порядка UTF-16. Отличаются ли единицы кода UTF-8? Я думал, что UTF-X являются просто кодировщиками и следуют юникоду - кодовые единицы (или кодовые точки) для всего. Мой вопрос: почему MDN говорит "UTF-16"?

1 Ответ

2 голосов
/ 07 октября 2019

Строка "2" - это следующая последовательность кодов символов:

50

Строка "15":

49 53

Сравнение строки означает последовательное сравнение кодов символов, останавливаясь, когда вы получаете первое различие (если вы достигаете конца обеих строк без разницы, строки равны). Начиная с 50 > 49, мы останавливаемся на первом символе и возвращаем результат этого сравнения.

Эти символы имеют те же коды в UTF-16, что и в UTF-8 (это верно для всех основныхСимволы ASCII), поэтому разница между этими системами кодирования не имеет значения для этого примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...