Estoy escribiendo un script de React donde tengo que mapear a través de una cadena dentro de una función de mapa.
const set = new Set(["I", "deck", " Yes."]); const arr = value.sort((a, b) => a.id - b.id) var v = 0 return <RightWrapper> <Header> <Button onClick={handleDelete}>Delete Transcription</Button> <Button onClick={signOut}>Sign out</Button> </Header> { arr.map(transcript => ( transcript.Transcription.map(word => ( <p key={transcript.id} style={{ color: set.has(word) ? 'red' : 'black' }} >{transcript.createdAt + " " + transcript.Transcription + " "} </p> )) ) ) } </RightWrapper>;Objetivo: verificar si hay alguna palabra dentro de la transcripción de la cadena. La transcripción está en el conjunto. En caso afirmativo, resalte esa palabra.
transcripción. La transcripción es una oración (cadena)
Probablemente haya otras formas de hacerlo, pero esto es lo que podría encontrar con la información que ha proporcionado:
[OPCIONAL] Use matrices si es posible (porque hay una función incorporada que verifica si al menos un objeto en la matriz satisface una condición dada)
Estoy convirtiendo las palabras de referencia (las llamo "palabras clave" en el ejemplo a continuación) en una expresión regular e invoco el método de prueba en estos
Para las palabras de entrada que devuelven true , puede usar su lógica de estilo y aplicar los estilos necesarios.
// const keywords = ["I", "Programmer"] const keywords = new Set(["I", "Programmer"]) const inputWords = ["I am a Programmer", "He is a Programmer", "She was a coder", "Yes, I love JS"] function hasMatch(word, keywords) { for (let kw of keywords) { let regex = new RegExp(kw) if (regex.test(word)) return true } return false } inputWords.forEach(word => console.log(`${word} --> ${hasMatch(word, keywords)}`)) if (inputWords.some(word => hasMatch(word, keywords))) { console.log('Found at least one match!') } NOTA : La expresión regular distingue entre mayúsculas y minúsculas. Puede hacerlo insensible agregando un parámetro adicional i a su constructor