2016-12-07 50 views
0

这有点郁闷了。 JavaScript新手,我没有在年龄编码。我正在寻找将一串字符转换为它们的charCodes并将它们转储到一个数组中。这是当前的代码:问题插入charCodes成阵列

function fillArray(str) { 
var arr=[]; 

    for (var i = 0; i < str.length; i++) { 

    arr.push(str.charCodeAt(str.charAt(i))); 
    } 

    return arr; 
} 

什么结束了发生的事情是,如果我把它像“ABCD”的字符串,它会返回[97,97,97,97]。即使charAt(i)应该迭代,数组似乎只能通过查看字符串中的第一个字符来形成。我错过了什么?

回答

2

charCodeAt把你想要的字符,而不是实际的字符的索引;所以只要删除charAt部分:

arr.push(str.charCodeAt(i)); 
+0

,但他为什么让97所有时间 – Mahi

+2

@Mahi因为他从'.charAt()传递的返回值'作为* * index **将被'.charCodeAt()'使用。它通常评估为'NaN','charCodeAt()'接受等同于'0'。 – Pointy

+0

@积分非常感谢。 :-) – Mahi

1

正如T.J. Crowder指出,String.prototype.charCodeAt()将索引作为参数。你得到97所有的时间的原因是(从MDN):

如果[参数]是不是一个数字,则默认为0。

所以总是需要第一信(索引为0),这是“一个”和它的字符代码是97

0

您可以在一个阵列(倾销)划分字符串与每个字符映射其ascci代码(transfarmation预期)。这样,你会在不久JS写:

var fillArray = str => str.split("").map(x => x.charCodeAt(0)); 
 
console.log(fillArray("bonjour le monde"));