如何反转"String.fromCodePoint",即将字符串转换为代码点数组



String.fromCodePoint(...[127482, 127480])给我一个美国的标志()。

如何将标志返回到[127482, 127480]

您正在寻找codePointAt,也许可以使用spread(等)转换回数组,然后映射它们中的每一个。

console.log(theString.codePointAt(0)); // 127482
console.log(theString.codePointAt(2)); // 127480
// Note −−−−−−−−−−−−−−−−−−−−−−−−−−^
// It's 2 because the first code point in the string occupies two code *units*

const array = [...theString].map(s => s.codePointAt(0));
console.log(array); // [127482, 127480]

或者跳过一个临时步骤,正如Sebastian Simon通过Array.from及其映射回调指出的那样:

const array = Array.from(theString, s => s.codePointAt(0));
console.log(array); // [127482, 127480]

示例:

const theString = String.fromCodePoint(...[127482, 127480]);
console.log(theString.codePointAt(0)); // 127482
console.log(theString.codePointAt(2)); // 127480
const array = [...theString].map(s => s.codePointAt(0));
console.log(array);  // [127482, 127480]
const array2 = Array.from(theString, s => s.codePointAt(0));
console.log(array2); // [127482, 127480]

Spread和Array.from都通过使用字符串迭代器来工作,该迭代器按代码点工作,而不是像大多数字符串方法那样按代码单元工作

最新更新