Добавление условий в числовой цикл (JavaScript) - PullRequest
1 голос
/ 07 февраля 2011

У меня есть четыре оператора IF, можно ли переписать это в более точный цикл, где [i] может быть '4' или выше.

if (typed.length == 1 && c.charAt(0) == typed[0]) { 
    //something ; 
    return false;
}

if (typed.length == 2 && c.charAt(0) == typed[0] 
    && c.charAt(1) == typed[1]) {  
    //something ; 
    return false;
}

if (typed.length == 3 && c.charAt(0) == typed[0] 
    && c.charAt(1) == typed[1] && c.charAt(2) == typed[2]) {  
    //something ; 
    return false;
}

if (typed.length == 4 && c.charAt(0) == typed[0] 
    && c.charAt(1) == typed[1] && c.charAt(2) == typed[2] 
    && c.charAt(3) == typed[3]) {  
    //something ; 
    return false;
}

Ответы [ 4 ]

3 голосов
/ 07 февраля 2011

Похоже, что-то вроде этого должно быть:

if (c.substr(0, typed.length) == typed)

Возможно typed.join(), если typed - массив.

1 голос
/ 07 февраля 2011

Попробуйте это

for(var x=0; x<typed.length; x++)
{
   if(c.chatAt(x)!=typed[x]) { return false; }
}
return true;
0 голосов
/ 07 февраля 2011

Забудьте о двух вложенных циклах, или, если c и typed "упорядочены", просто найдите символ в c

for (var i=0; i<typed.length; i++) {
   if (c.indexOf(typed.charAt(i)) >= 0) {  // or c.indexOf(typed.charAt(i)) == i
      return false;
   }
}
return true;
0 голосов
/ 07 февраля 2011
for (var i=1; i<=4; ++i){
  if (typed.length!=i) continue;
  var OK = true;
  for (var j=0;j<i;++j){
    OK = OK && (c.charAt(0)==typed[j]);
  }
  if (OK){
    // something
    return false;
  }
}
...