我试着把十进制转换成这样的文本:
function decimalToText(str){
var arr = [];
for (var i = 0, l = str.length; i < l; i ++) {
var text = str.fromCharCode(i);
arr.push(text);
}
return arr.join('');
}因此,我希望'104 101 108 108 111 32 119 111 114 108 100‘转换为“你好世界”,例如
但我总能拿到Uncaught TypeError: str.fromCharCode is not a function
有人知道我哪里出问题了吗?
发布于 2017-09-12 21:16:45
你们关系很好。如果您查看fromCharCode()的文档,您将首先看到您不正确地调用它。
因为fromCharCode()是String的一个静态方法,所以您总是将它用作String.fromCharCode(),而不是作为您创建的String对象的方法。
您可以传入一个unicode字符数组并循环它们,例如:
function decimalToText(unicodeArray){
var arr = [];
for (var index in unicodeArray) {
var text = String.fromCharCode(unicodeArray[index]);
arr.push(text);
}
return arr.join('');
}
console.log(decimalToText([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]));或者更干净(没有循环),您可以使用应用功能
function decimalToText(unicodeArray){
return String.fromCharCode.apply(null, unicodeArray);
}
console.log(decimalToText([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]));或者使用ES6,您可以使用扩展算子
function decimalToText(unicodeArray){
return String.fromCharCode(...unicodeArray);
}
console.log(decimalToText([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]));https://stackoverflow.com/questions/46185081
复制相似问题