刚接触javascript几个礼拜,碰到一个关于凯撒密码的问题,就动手写了一下,自己还没写完。发现函数内部虽然对参数做了变动,但想返回已经变动过的参数(达到字母移位的效果),却返回了原封不动的原参数,该怎么办?
刚接触javascript几个礼拜,碰到一个关于凯撒密码的问题,就动手写了一下,自己还没写完。发现函数内部虽然对参数做了变动,但想返回已经变动过的参数(达到字母移位的效果),却返回了原封不动的原参数,该怎么办?
in
,in
用于判断一个对象有没有一个属性,不能判断一个数组是否包含某个元素,使用includes
代替;str = str.replace
重新给str
赋值;function rot13 (str) {
var empty = [];
for (var i = 0; i < str.length; i++) {
empty.push(str.charCodeAt(i))
}
var left = empty.filter(function (x) {return x >= 65 && x <= 77})
var right = empty.filter(function (y) {return y >= 78 && y <= 90})
for (var j = 0; j < str.length; j++) {
if (left.includes(str.charCodeAt(j))) { // 使用includes
str = str.replace(str[j], String.fromCharCode(str.charCodeAt(j) + 13)) // 重新赋值
}
}
return str
}
13 回答12.7k 阅读
7 回答1.8k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
6 回答775 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
其实, 没必要在charCodeAt/fromCharCode之间转来转去的, 完全可以处理完统一转