Ich gehe durch die FreeCodeCamp Mutations Herausforderung. Hier ist, was ich zu tun habe:Finden von Übereinstimmungen in zwei Arrays mit indexOf
Return true, wenn die Zeichenfolge in das erste Element des Arrays enthält alle Buchstaben des Strings in dem zweiten Element des Arrays.
Zum Beispiel sollte ["Hallo", "Hallo"] sollte True zurückgeben, da alle Buchstaben in der zweiten Zeichenfolge im ersten, ignorierenden Fall vorhanden sind.
Die Argumente ["Hallo", "hey"] sollten false zurückgeben, da die Zeichenfolge "Hallo" kein "y" enthält.
Schließlich, ["Alien", "Linie"] sollte True zurückgeben, da alle Buchstaben in "Zeile" in "Alien" vorhanden sind.
Dies ist meine Lösung. Leider funktioniert es nicht, obwohl ich denke, dass es möglich ist, das Problem so zu lösen. Wo ist mein Fehler? Hier
ist der Code mit meiner ausführlichen Bemerkungen:
function mutation(arr) {
//indexOf is case sensitive, so first we make all the elements in the array lowerCase. After that we use the lowerCaseArray instead of our original array
var y = arr.join(" ");
var x = y.toLowerCase();
var lowerCaseArray = x.split(" ")
// This variable will contain the number of matches
var matchCounter = 0;
//The for loop picks a letter from the second element
//(lowerCaseArray[1][i]) of an array and then we look
//if a match in the first element of an array(lowerCaseArray[0] is found).
//If there is a match, then the indexOf would return a number >=0.
//In this case we add 1 to our matchCounter.
for (i = 0; i < lowerCaseArray[1].length; i++) {
if(lowerCaseArray[0].indexOf(lowerCaseArray[1][i]) > 0) {
matchCounter+= 1;
}
//Finally we compare the matchCounter length with the second
//element of our array. If matchCounter >= the length of our
//array, it means every letter in the second element was found
//within the first element
}
return matchCounter >= arr[1].length;
}
mutation(["floor", "for"]);
Aus irgendeinem Grund return lowerCaseArray[1][i];
gibt ‚o‘, obwohl der letzte Buchstabe des zweiten Elements ist „r“. Und in dem gegebenen Beispiel ist matchCount
gleich 2, aber es sollte 3 sein, weil es 3 Übereinstimmungen gibt. Vielleicht ist das der Teil mit einem Fehler.
Ich lief Ihren Code und es geht richtig durch alle 3 Buchstaben, 'f',' o' und 'r'. Kannst du nochmal laufen und verifizieren? –
Es tut, aber es gibt false zurück, weil der matchCounter 2 gleich ist, wenn 3. –