Necesito encontrar palabras diferentes y pequeñas frases de longitud de hasta 5 palabras (o podría ser personalizable) de un texto dentro de otro. Las diferencias quiero guardarlas en un array, de tal forma que solo se guarden las palabras o frases sin repetir (se comprueba antes si ya existe). De momento he conseguido que me busque las palabras diferentes, pero no sé cómo hacer que ahora siga buscando frases de 2 palabras (consecutivas), en la siguiente iteración de 3 palabras, 4... y así sucesivamente.
var texto = "Aquí va el el primer texto a analizar e incluso con palabras repetidas repetidas";
var texto2 = "Aquí va el segundo texto a analizar analizar e incluso con algunas palabras repetidas";
var palabras = texto.split(" ");
var palabras2 = texto2.split(" ");
var diferentes = [];
for (var i=0; i<palabras.length; i++) {
if (texto2.includes(palabras[i]) == false) {
if (diferentes.includes(palabras[i]) == false) { //si no existe en el array de diferencias
diferentes.push(palabras[i]);
}
}
}
for (var i=0; i<palabras2.length; i++) {
if (texto.includes(palabras2[i]) == false) {
if (diferentes.includes(palabras2[i]) == false) { //si no existe en el array de diferencias
diferentes.push(palabras2[i]);
}
}
}
for (var j=0; j<diferentes.length; j++) {
console.log("Elemento "+ j + " diferente en ambos textos = "+diferentes[j])
}
¿Cómo puedo hacer que cada vez me vaya cogiendo una palabra más del texto1 y analizando si existe en el texto2, buscando siempre todas las frases posibles (pero las palabras deben ser consecutivas)?
Para conjuntos de dos palabras deberías hacer un "for" que vaya desde la primera posición hasta la penúltima. Para cada posición "i", tomarás la palabra de la posición "i" y la de la posición "i+1", las concatenarás con un espacio entre medias, y así tienes una nueva cadena, que probarías a ver si aparece en la otra cadena o no.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)