2016-06-18 21 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) –