2015-11-19 68 views
2

我想讓我的程序檢查數組中的任何兩個連續單詞是否相同。我相信我的「if」語句是正確的,但console.log顯示所有連續的單詞都匹配。我在這裏錯過什麼?Javascript數組:如何檢查連續兩個單詞是否相同?

任何幫助表示讚賞!我是新來的這東西:)

var wordArray = ["blue", "green", "yellow", "red", "red", "blue", "blue", "yellow"] 

for (i=0; i<wordArray.length - 1; i++) { 
    if (i === i+1); { 
     console.log("We have a match!"); 
    } //Why is this loop saying that all items in the array are equal? 
} 

回答

4

試試這個。您正在檢查索引,而不是數組元素,除了if語句錯誤之外。

for (i = 0; i < wordArray.length - 1; i++) { 
    if (wordArray[i] === wordArray[i + 1]) { 
     console.log("We have a match!"); 
    } 
} 

更好長度的處理只是一個提示,如果數組只有一個元素長:

for (i = 1; i < wordArray.length; i++) { 
    if (wordArray[i - 1] === wordArray[i]) { 
     console.log("We have a match!"); 
    } 
} 
0

試試這個,

var wordArray = ["blue", "green", "yellow", "red", "red", "blue", "blue", "yellow"] 

for (i=1; i<wordArray.length; i++) { 
    if (wordArray[i] === wordArray[i-1]) { 
     console.log("We have a match!"); 
    } 
} 
+1

注意';'如果 –

+0

@NinaScholz是,我錯過了, – azad

+0

@Halcyon我用前面的單詞測試,所以它應該去到最後。 – azad

0

它看起來像你實際上是在比較你的指數在代碼中將var「i」改爲「i + 1」,導致控制檯聲明數組中的所有項都相等。 因爲實際上比較指數的VAR,JavaScript是因爲看到了這個:

if(1 === 2) 
    console.log("We have a match"); 

因爲你真正要比較wordArray的內容:

if(wordArray[i] === wordArray[i + 1]) 
    console.log("We have a match!"); 

這裏要記住的重要一點是,當使用「for」循環時,索引變量「i」在這種情況下僅僅是用於訪問數組內容的整數索引。

相關問題