我用javascript编写这个小程序用于练习目的,它的工作原理非常好。我只是试图遵循我学到的不要重复自己的规则,并且我想知道是否有任何方法可以简化我目前的代码(尤其是6条if语句,用于检查Rattata是拼写正确的。)
var spelledWrong = true
function spellRattata() {
var letter = ["R"];
for(var i = 0; i < 6; i++) {
var a = Math.round(Math.random());
if(a) {
a = "a";
}else{
a = "t";
};
letter.push(a);
};
if(letter[1] === "a") {
if(letter[2] === "t") {
if(letter[3] === "t") {
if(letter[4] === "a") {
if(letter[5] === "t") {
if(letter[6] === "a") {
for(var i = 0; i < 7; i++) {
console.log(letter[i]);
};
};
};
};
};
};
};
};
while(spelledWrong) {
spellRattata();
}
提前感谢任何帮助我的人。
答案 0 :(得分:1)
function spellRattata() {
var word = "r";
for (var i = 0; i < 6; i++)
word += Math.random() > 0.5 ? "a" : "t";
if (word == "rattata")
return true;
console.log(word);
return false;
}
while (!spellRattata());
如果你真的想缩短它:
function spellRattata() {
for (var a = "r", b = 0; b < 6; b++) a += Math.random() > .5 ? "a" : "t";
return "rattata" == a || (console.log(a), !1)
}
for (; !spellRattata(););
答案 1 :(得分:0)
试试这个:
var letter = ['R','a','t','t','a','t','a'];
letter = letter.join('');
if(letter==='Rattata')
console.log('Correct');
else
console.log('Wrong');
答案 2 :(得分:0)
您不需要比较字符串和缓冲字母。
"attata"
一词。所以你可能想要利用它。Math.round(Math.random())
等于1时生成“a”,否则生成“t”。所以你实际上为每个Math.random()&gt; = 0.5生成“a”。您可能也希望利用这一点以下是显示我想要告诉的内容的片段。 它可以根据您的需要工作,但它针对速度进行了优化。
var ATTATA_MAP = [true, false, false, true, false, true];
var spellRattata = () => ATTATA_MAP.every(v => v === (Math.random() >= 0.5));
while(!spellRattata()) {
console.log('wrong spelled');
}