这有点让人抓狂。新的JavaScript和我没有编码的年龄。我希望将一串字符转换为他们的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)应该迭代,但数组似乎只是通过查看字符串中的第一个字符来形成。我错过了什么?
答案 0 :(得分:2)
charCodeAt
获取所需字符的索引,而不是实际字符;所以只需删除charAt
部分:
arr.push(str.charCodeAt(i));
答案 1 :(得分:1)
作为T.J. Crowder指出,String.prototype.charCodeAt()
将索引作为参数。你一直得到97的原因是(来自MDN):
如果[参数]不是数字,则默认为0.
所以它总是需要第一个字母(索引为0),即&#34; a&#34;它的字符代码是97。
答案 2 :(得分:0)
您可以将字符串拆分为数组(转储),并使用其ascci代码映射每个字符(预期转换)。这样,你很快就会在JS中编写它:
var fillArray = str => str.split("").map(x => x.charCodeAt(0));
console.log(fillArray("bonjour le monde"));
&#13;