我试图在数组的特定索引上使用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");
答案 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的字符数组来使用更实用的方法。
const rot13 = (str) => str.split("").map(x => x.charCodeAt(0))
console.log(
rot13("SERR")
)
&#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是一个可迭代的对象。
function rot13(str) {
return Array.from(str, (char, i) => str.charCodeAt(i))
}
console.log(rot13("SERR"));
&#13;