2017-09-12 149 views
0

我試圖轉換小數爲文本這樣的:JavaScript - fromCharCode不是函數嗎?

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

任何人都知道我要去哪裏錯了嗎?

+0

This is String.fromCharCode(number).check this https://www.w3schools.com/jsref/jsref_fromCharCode.asp – Debabrata

+0

因爲它不是一個函數,它不是所有字符串的原型,它存在於字符串的構造函數中 – adeneo

+0

什麼是你期望通過這個功能,你期望什麼?請舉一個例子 –

回答

2

你就近了。如果你在爲fromCharCode()文件看看,你會先看到你被錯誤地稱之爲

因爲fromCharCode()是字符串的靜態方法,你總是把它作爲使用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])); 

甚至清潔劑(無環),你可以使用apply function

function decimalToText(unicodeArray){ 
    return String.fromCharCode.apply(null, unicodeArray); 
} 

console.log(decimalToText([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100])); 

或者用ES6,您可以使用spread operator

function decimalToText(unicodeArray){ 
    return String.fromCharCode(...unicodeArray); 
} 

console.log(decimalToText([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]));