将charCodes插入数组时出现问题

时间:2016-12-07 14:49:41

标签: javascript arrays

这有点让人抓狂。新的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)应该迭代,但数组似乎只是通过查看字符串中的第一个字符来形成。我错过了什么?

3 个答案:

答案 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中编写它:

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