es mi primera publicación aquí y estoy tratando de hacer un ejercicio de freecodecamp.
Aquí está mi código:
function mutation(arr) { let newArr = arr[0].toLowerCase(); let arrNew = arr[1].toLowerCase(); let test = newArr.split(' '); let newTest = arrNew.split(' '); for (let i=0; i < test.length; i++) { for (let j=0; j < newTest.length; j++) { if (newTest[j] === test[i]) { return true; } } } return false; } mutation(["hello", "hey"]);El ejercicio es "Mutaciones" y necesito devolver verdadero si la primera cadena en la matriz tiene todas las letras de la segunda. Estoy tratando de entender cómo detener el ciclo cuando la declaración if es verdadera y guardarla.
Gracias de antemano y perdón si no me expliqué correctamente.
return saldrá de la función y, por lo tanto, saldrá del bucle.
Por eso sabemos que si su función devuelve falso , la condición newTest[j] === test[i] nunca se verificó.
Puedes suponer que la primera palabra tiene todas las letras de la segunda, repite como lo estás haciendo ahora y comprueba si encuentras un contraejemplo.
El siguiente código debería ayudarte.
function mutation(arr) { let newArr = arr[0].toLowerCase(); let arrNew = arr[1].toLowerCase(); for (let i=0; i < newArr.length; i++) { if (arrNew.indexOf(newArr[i]) == -1) { return false; } } return true; } mutation(["hello", "hey"]);No hay necesidad de usar arreglos. en JS, las cadenas funcionan como matrices y podemos usar un bucle "for".
Si desea utilizar bucles como en su código de ejemplo, aquí hay una forma muy detallada de hacerlo:
function mutation(arr) { let hasAllLetters = true; let stringToCompare = arr[0].toLowerCase(); let referenceString = arr[1].toLowerCase(); let hasCurrentLetter; for (let i=0; i < referenceString.length; i++) { hasCurrentLetter = false; for (let j=0; j < stringToCompare.length; j++) { if (referenceString[i] === stringToCompare[j]) { hasCurrentLetter = true; // break from the second loop as soon as the condition is satisfied break; } } if(!hasCurrentLetter){ hasAllLetters = false; // as soon as there is at least one letter which does not exist from the reference string // break from the second loop and exit yielding the result false break; } } return hasAllLetters; } let res; res = mutation(["hello", "goll"]); console.log("res: ", res); // false res = mutation(["hello", "olhh"]); console.log("res: ", res); // true