JavaScript中字符串的length
属性是代码单元的数量,例如:
console.log("a".length); // 3
我实现了一个返回Unicode点数的函数:
function length(str) {
let l = 0;
for (let i = 0; i < str.length; i++) {
const code = str.charCodeAt(i);
if (code >= 0xD800 && code <= 0xDBFF)
i++;
l += 1;
}
return l;
}
console.log(length("a")); // 2
但是,如果字符串很长,我的实现就不是很有效。有没有人有更好的实现?为什么ECMAScript不提供执行此工作的内置方法?