str.charCodeAt()不在数组上工作

时间:2017-06-21 16:24:52

标签: javascript

我试图在数组的特定索引上使用str.charCodeAt()。 这是不起作用的代码:

ID

错误是:" TypeError:str.charCodeAt()不是函数"。

如果我将数组索引分配给变量然后对变量执行,我是否必须这样做或者有没有办法在数组上执行此操作?

使用变量:

function rot13(str) { 

  str = str.split("");

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

    str[i] = str.charCodeAt(i);


  }


  return var1;
}

rot13("SERR");

4 个答案:

答案 0 :(得分:2)

charCodeAt()仅适用于字符串,而不适用于数组。您需要访问数组元素。每个数组元素都包含一个包含一个元素的字符串,您可以在该字符串上使用charCodeAt()

str[i] = str[i].charCodeAt(0);

但实际上并不需要首先将字符串拆分为数组。您可以为结果数组使用不同的变量。

function rot13(str) {
  var result = [];
  for (var i = 0; i < str.length; i++) {
    result[i] = str.charCodeAt(i);
  }
  return result;
}

console.log(rot13("SERR"));

答案 1 :(得分:0)

您可以通过映射返回charcode的字符数组来使用更实用的方法。

&#13;
&#13;
const rot13 = (str) => str.split("").map(x => x.charCodeAt(0))

console.log(
  rot13("SERR")
)
&#13;
&#13;
&#13;

答案 2 :(得分:0)

看起来你有很多问题,

   str = str.split("");

当你这样做时str成为一个数组,它不再是String。这就是你得到错误的原因。

您需要做的只是删除拆分相关代码,经过小修复,它应该可以正常工作

function rot13(str) { 
  var var1=[];
  for (i = 0; i < str.length; i++) {
    var1[i]  = str.charCodeAt(i);
  }
  return var1;
}

答案 3 :(得分:0)

只是Array.prototype.from,但请注意,您可能不需要将字符串拆分为数组,因为String是一个可迭代的对象。

&#13;
&#13;
function rot13(str) { 

  return Array.from(str, (char, i) => str.charCodeAt(i))
}

console.log(rot13("SERR"));
&#13;
&#13;
&#13;