我正在写一个React脚本,我必须通过映射函数内的字符串进行映射。
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>;
目标-检查字符串文本中是否有单词。转录在集合中。如果是,则突出显示该单词。
成绩单。转录是一个句子(字符串)
可能还有其他方法,但根据您提供的信息,这是我能想到的:
-
[OPTIONAL]如果可能的话使用数组(因为有一个内置的函数检查数组中是否至少有一个对象满足给定条件)
-
我正在转换参考词(我称之为"关键词")。(在下面的示例中)转换为正则表达式,然后在这些
上调用test方法 -
对于返回
true
的输入词,你可以使用你的样式逻辑并应用必要的样式。
// 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!')
}
注意:正则表达式区分大小写。您可以通过在其构造函数
中添加额外的参数i
来使其不敏感。