Estoy tratando de recorrer una matriz y si hay elementos coincidentes, debería ser verdadero en una nueva matriz; de lo contrario, devolverá falso.
const wordPerformance = [] const wordsReviewed = "candy, cattle, cat, call, cheat"; const wordsIncorrect = "candy, cattle, call, cheat"; wordsReviewed.split(/,\s?/).forEach((word) => { if (wordsIncorrect.includes(word)) { wordPerformance.push(false); } else { console.log(word) //unreachable, though 'cat' should be logged wordPerformance.push(true); } }); console.log(wordPerformance);Según esta lógica, wordPerformance debería devolver
[false, false, true, false, false]sin embargo, está volviendo
[false, false, false, false, false]¿Quizás hay algo que no estoy viendo?
Primero debe dividir las wordsIncorrect Cadena incorrecta de la misma manera que lo hizo con las wordsReviewed para que se compare con el elemento y no incluya cadenas que tengan algo al final como hacer coincidir "gato" con "ganado".
Este es el ejemplo fijo.
const wordPerformance = [] const wordsReviewed = "candy, cattle, cat, call, cheat"; const wordsIncorrect = "candy, cattle, call, cheat"; const wordsIncorrectSplitted = wordsIncorrect.split(/,\s?/); wordsReviewed.split(/,\s?/).forEach((word) => { if (wordsIncorrectSplitted.includes(word)) { wordPerformance.push(false); } else { console.log(word) //unreachable, though 'cat' should be logged wordPerformance.push(true); } }); console.log(wordPerformance);También se está olvidando de dividir su cadena de palabras incorrectas en una matriz. En este momento, está comprobando si la cadena incluye la palabra en lugar de una matriz. Como resultado, String.includes lleva a cabo la coincidencia de patrones en toda la cadena en lugar de elementos individuales. Dado que cada palabra incorrecta incluye el patrón cat en ellas, pensará que gato está incluido y devolverá falso:
const wordPerformance = [] const wordsReviewed = "candy, cattle, cat, call, cheat"; const wordsIncorrect = "candy, cattle, call, cheat"; wordsReviewed.split(/,\s?/).forEach((word) => { if (wordsIncorrect.split(/,\s?/).includes(word)) { //split incorrectWords wordPerformance.push(false); } else { console.log(word) //unreachable, though 'cat' should be logged wordPerformance.push(true); } }); console.log(wordPerformance);Necesita dividir wordsIncorrect también. if (wordsIncorrect.split(",").includes(word))
Producción:
cat [ false, false, true, false, false ]