У меня есть четыре оператора 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; }
Похоже, что-то вроде этого должно быть:
if (c.substr(0, typed.length) == typed)
Возможно typed.join(), если typed - массив.
typed.join()
typed
Попробуйте это
for(var x=0; x<typed.length; x++) { if(c.chatAt(x)!=typed[x]) { return false; } } return true;
Забудьте о двух вложенных циклах, или, если c и typed "упорядочены", просто найдите символ в c
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;
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; } }