> One of your "problems", the length of an array with a single string element, isn't a problem.
You're misunderstand the code, it's using the spread operator on a string:
[...'word'] => ["w", "o", "r", "d"]
What is being demonstrated is that under the hood, javascript stores astral plane codepoints as surrogate pairs and strings operate on 'characters' which is why '\u{1F4A9}'.length => 2. But, when the spread operator is applied to a string, it breaks up the string into codepoints, not characters. This is also why [...'man\u0303ana'].length => 7, the combining tilde is a separate codepoint.
This is an example of how wonky string processing in JS is,
[...string].length is actually the most straightforward way to get a count of codepoints in a string.
You're misunderstand the code, it's using the spread operator on a string:
[...'word'] => ["w", "o", "r", "d"]
What is being demonstrated is that under the hood, javascript stores astral plane codepoints as surrogate pairs and strings operate on 'characters' which is why '\u{1F4A9}'.length => 2. But, when the spread operator is applied to a string, it breaks up the string into codepoints, not characters. This is also why [...'man\u0303ana'].length => 7, the combining tilde is a separate codepoint.
This is an example of how wonky string processing in JS is, [...string].length is actually the most straightforward way to get a count of codepoints in a string.