在我的代码中,我试图测试数组元素是否为数字,如果是数字,则将其设置为自身并转到数组的下一部分。如果它不是一个数字,那么检查该字母是否为大写。如果它的大写将它设置为对象中它的大写值,并且如果它不保持它的对象的小写值。但现在代码不会将其更改为其对象字母或保留它们的资本。注释后的代码可以将其转换为对象组件,但不能将其保留为大写。请查看我的代码并告诉我我做错了什么。这一点是将数组更改为相反的字母(a = z b = y等),并保持其大写属性。
function main() {
var get = document.getElementById("in").value;
var ina = [...get];
var script = {
a: "z",
b: "y",
c: "x",
d: "w",
e: "v",
f: "u",
g: "t",
h: "s",
i: "r",
j: "q",
k: "p",
l: "o",
m: "n",
n: "m",
o: "l",
p: "k",
q: "j",
r: "i",
s: "h",
t: "g",
u: "f",
v: "e",
w: "d",
x: "c",
y: "b",
z: "a",
" ": " "
};
for(i = 0; i < ina.length; i++) {
var x = isNaN(ina[i]);
var y = ina[i];
if(x) {
if(y == y.toUpperCase()) {
y = script[y];
y = y.toUpperCase();
} else {
y = script[y];
};
} else {
y = script[y];
};
};
var outa = ina.join("");
document.getElementById("out").value = outa;
};
/* for(i = 0; i < ina.length; i++) {
ina[i] = script[ina[i] || ina[i]];
};
var outa = ina.join("");
document.getElementById("out").value = outa;
};
*/
答案 0 :(得分:1)
您应该在某个时刻将y
分配给ina[i]
,这当前没有发生。此外,当y.toUpperCase()
已经是大写时,您应用y
。
我还建议放弃isNaN
测试。最好测试角色是否在script
中有翻译,如果没有,则保持角色不变。
以下是建议的循环:
for(var i = 0; i < ina.length; i++) {
var y = script[ina[i].toLowerCase()] || ina[i];
if (ina[i] == ina[i].toUpperCase()) y = y.toUpperCase();
ina[i] = y;
}
答案 1 :(得分:0)
您应该设置y
时,将临时变量ina[i]
设置为所需的字母。试试这个:
if(y == y.toUpperCase()) {
ina[i] = script[y].toUpperCase();
} else {
ina[i] = script[y];
};