2016-06-18 19 views
-1

我試圖讓我的函數返回某些響應,具體取決於輸入有多少元音。但是,它似乎將整個單詞複製到新數組中。Javascript:if/for循環發出

Expected: die Jürgen, instead got: der Jürgen 

有誰能告訴我我在哪搞亂了嗎?

function derDieDas(wort){ 
    var vowels = ['a', 'e', 'i', 'o', 'u', 'ä', 'ö', 'ü']; 
    var newArray = []; 
    for(var i in wort) { 
    for(var j in vowels) { 
     if(i === j) { 
     newArray[newArray.length] = i; 
     }; 
    }; 
    }; 
    if(newArray.length < 2) { 
    return 'das ' + wort; 
    } else if(newArray.length < 4) { 
    return 'die ' + wort; 
    } else { 
    return 'der ' + wort; 
    } 
}; 
+1

你爲什麼_guessing_什麼循環做數組的元素?在循環之後放置'console.log(newArray);'並查看瀏覽器控制檯中的結果(按F12)。它應該是'if(wort [i] ===元音[j]){newArray [newArray.length] = wort [i]; '在循環內部。 – Xufox

+3

您正在比較指數,而不是數值。 –

+1

在JS中,您可以使用大量的Array方法在您的服務中。 – Redu

回答

1

您比較指標

if (i === j) { 

,而不是像

if (wort[i] === vowels[j]) { 
+0

像你和Xufox說的,我是在比較錯誤的東西。我最終用一串元音替換了元音數組。您仍然會將該字符串稱爲元音[j]而不是[j]正確嗎? – James

+0

只是'[j]'沒有意義,因爲它使用['Array#toString'](https://developer.mozilla.org/)返回** string **,其值爲'j' EN-US /文檔/網絡/的JavaScript /參考/ Global_Objects /陣列/的toString) –