2013-08-05 44 views
1

我試圖檢查,看看是否有多個字母的單詞(每個字是5個字),我有8938個字,叫做庫變量數組。檢查,看是否有字有多個字母

  function checkLetters(word){ 
       var constant = 0; 
       for(i=0;i<5;i++){ 
        for(j=i+1;j<5;j++){ 
         if(word.charAt(i) == word.charAt(j)){ 
          return false; 
          break; 
         } else { 
          return true; 
         } 
        } 
       } 
      } 
      if(compPrompt == 5 && checkLetters(compChoice) == true){ 
       console.log(checkLetters(compChoice)); 
       $('.right').append('<p id="winQuestion">Is "'+compFinalChoice+'" your word?'); 
       $('.right').append('<div class="yesNo" id="yesQ"><p>Yes</p></div>'); 
       $('.right').append('<div class="yesNo" id="noQ"><p>No</p></div>'); 
       $('#yesQ').click(function() { 
        alert('Your word is "'+compFinalChoice+'". You lose!'); 
        document.location.reload(true); 
       }); 
       $('#noQ').click(function() { 
        $('.yesNo').remove(); 
        $('#winQuestion').remove(); 
        var splitCompChoice = compFinalChoice.split(''); 
        var constant = 0; 
        var possibleAnswers = []; 
        for(var k=0;k<8939;k++){ 
         for(var i=0;i<5;i++){ 
          if(library[k].indexOf(splitCompChoice[i]) > -1){ 
           constant++; 
           if(constant = 5 && checkLetters(library[k]) == true){ 
            possibleAnswers.push(library[k]); 
           } 
          } 
         } 
       }); 
      } 

我有兩個代碼問題。一方面,這是越來越近了if(compPrompt == 5 && checkLetters(compChoice) == true){checkLetters(compChoice)是不正確的和兩個它告訴我library[k]沒有定義。

+0

當你說「多字母」你的意思是,如果這個詞有重複的信嗎? – btse

+0

是的,但低於該問題得到了解決,我有話數組調用庫,當我點擊#noQ它告訴我,庫[K]沒有定義 –

+0

@btse他的意思'repeating'字母 - 他的代碼勝於更好他的話:) – alfasin

回答

0

在你返回true,如果第一個字符不等於第二個字符,爲了解決它的第一個功能,你應該改變:

function checkLetters(word){ 
    var constant = 0; 
    for(i=0;i<5;i++){ 
     for(j=i+1;j<5;j++){ 
      if(word.charAt(i) == word.charAt(j)){ 
       return false; 
       break; 
      } else { 
       return true; 
      } 
     } 
    } 
} 

到:

function checkLetters(word){ 
    var constant = 0; 
    for(i=0;i<5;i++){ 
     for(j=i+1;j<5;j++){ 
      if(word.charAt(i) == word.charAt(j)){ 
       return false; 
       break; 
      } 
     } 
    } 
    return true; 
} 

其次,因爲我們不能看到你在哪兒,你張貼在這裏的代碼申報library,我認爲它應該是介於定義爲var(局部變量),這意味着,如果你希望能夠使用它的一些其他功能裏面你應該通過它。

UPDATE:
關於library - 嘗試更改代碼如下:

$('#noQ').click(function(library) { 
    $('.yesNo').remove(); 
    $('#winQuestion').remove(); 
    var splitCompChoice = compFinalChoice.split(''); 
    var constant = 0; 
    var possibleAnswers = []; 
    for(var k=0;k<8939;k++){ 
     for(var i=0;i<5;i++){ 
      if(library[k].indexOf(splitCompChoice[i]) > -1){ 
       constant++; 
       if(constant = 5 && checkLetters(library[k]) == true){ 
        possibleAnswers.push(library[k]); 
       } 
      } 
     } 
}(library)); 
+0

這是我的代碼中的第一件事,我不明白它可能是一個局部變量。 –

+0

@ThomasNocera在這種情況下,一看便知 – alfasin

+0

仍然沒有運氣得到這個「類型錯誤的'UPDATE'部分:庫[k]爲未定義 [打破這個錯誤] \t 如果(庫[K] .indexOf( splitCompChoice [i])> -1){「 –

0

要解決獲得通過您的if語句時checkLetters函數返回假的,我會改變聲明的問題從

if(compPrompt == 5 && checkLetters(compChoice) == true)

if(compPrompt == 5 && checkLetters(compChoice)) 
相關問題