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

时间:2016-11-26 06:04:56

标签: javascript short

我用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();
    } 

提前感谢任何帮助我的人。

3 个答案:

答案 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”。您可能也希望利用这一点
  • 由于我们有两个字母来确定它是否匹配,我们可能会使用布尔值而不是字母。 “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');
}