Javascript 有没有办法缩短我的代码?

Javascript 有没有办法缩短我的代码?,javascript,short,Javascript,Short,为了练习,我用javascript编写了这个小程序,它运行得非常好。我只是想遵循我学到的不要重复自己的规则,我想知道是否有任何方法可以简化我目前拥有的代码(特别是检查Rattata拼写是否正确的6 if语句) var拼写错误=true 函数spellratata(){ 变量字母=[“R”]; 对于(变量i=0;i=.5会更好 function spellRattata() { for (var a = "r", b = 0; b < 6; b++) a += Math.random

为了练习,我用javascript编写了这个小程序,它运行得非常好。我只是想遵循我学到的不要重复自己的规则,我想知道是否有任何方法可以简化我目前拥有的代码(特别是检查Rattata拼写是否正确的6 if语句)

var拼写错误=true
函数spellratata(){
变量字母=[“R”];
对于(变量i=0;i<6;i++){
var a=Math.round(Math.random());
如果(a){
a=“a”;
}否则{
a=“t”;
};
信。推送(a);
};
如果(字母[1]=“a”){
如果(字母[2]=“t”){
如果(字母[3]=“t”){
如果(字母[4]=“a”){
如果(字母[5]=“t”){
如果(字母[6]=“a”){
对于(变量i=0;i<7;i++){
控制台日志(字母[i]);
};
};
};
};
};
};
};
};
while(拼写错误){
Spellratata();
} 
提前感谢所有帮助我的人。

试试这个:

var letter = ['R','a','t','t','a','t','a'];
letter = letter.join('');

if(letter==='Rattata')
    console.log('Correct');
else
    console.log('Wrong');
函数spellratata(){
var word=“r”;
对于(变量i=0;i<6;i++)
word+=Math.random()>0.5?“a”:“t”;
如果(单词==“Ratta”)
返回true;
console.log(word);
返回false;
}
而(!spellratata());
如果你真的想缩短它:

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(););
函数spellratata(){
对于(var a=“r”,b=0;b<6;b++)a++=Math.random()>.5?“a”:“t”;
返回“ratata”==a | |(console.log(a),!1)
}
对于(;!spellratata(););

您不需要比较字符串和缓冲字母

  • 您将在每次通话中使用单词“attata”。所以你可能想利用它
  • Math.round(Math.random())
    等于1时,生成“a”,否则生成“t”。因此,实际上为每个Math.random()>=0.5生成“a”。你可能也想利用这一点
  • 因为我们有两个字母来确定它是否匹配,所以我们可以使用布尔值而不是字母。对“a”为TRUE,对“t”为FALSE
  • 当您需要操作阵列时,使用内置函数将提高性能
下面是我想在上面讲的内容的片段。 它的工作原理与您的需要相同,但它针对速度进行了优化

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');
}

如果(字母==='Ratta')将do@barudo这将失败,因为
字母
是一个数组。现在,
字母
可以更改为字符串-现在不是。所以你需要将其更改为字符串…这个问题需要发布在not here上,因为这更像是关于重构和注释的意见
Math.random()>=.5
会更好
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(););
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');
}