我有一个由多个单词组成的数组,我想从单词数组中检查在此字符串中找到的第一个单词。
const arrayOfWord=['@Robot','@Human','@Animal','@Hero']
const body = 'This is a try to found the @Human & the @Animal'
arrayOfWord.some(arrayOfWord=> body.includes(arrayOfWord)) // This will return true
// i want to get the value @Human as it's the first word in the string that exists in the array
我想得到value = '@Human'
。我该如何实现?
答案 0 :(得分:1)
尝试使用.find()代替.some()
.find()
方法返回提供的数组中满足提供的测试功能的第一个元素的值。
const arrayOfWord=['@Robot','@Human','@Animal','@Hero']
const body = 'This is a try to found the @Human & the @Animal'
const res = arrayOfWord.find(arrayOfWord => body.includes(arrayOfWord))
console.log(res)
答案 1 :(得分:1)
您可以尝试将 body 拆分为数组,然后过滤掉所有不在 arrayOfWord 中的单词。完成这种转换后,您可以选择第一个元素。
body.split(" ").filter(word => arrayOfWord.includes(word))[0]
答案 2 :(得分:0)
如您的示例所示,文本中可能出现多个单词,我们正在寻找最早的单词。请看下面的代码:
const arrayOfWord=['@Robot','@Human','@Animal','@Hero']
const body = 'This is a try to found the @Human & the @Animal'
var output = undefined;
arrayOfWord.filter((arrayOfWord)=> {
let retVal = ((body.indexOf(arrayOfWord) >= 0) ? body.indexOf(arrayOfWord) : false);
if (retVal !== false) {
if ((!output) || (output.index > retVal)) output = {index : retVal, word: arrayOfWord};
}
return retVal !== false;
})
console.log(output ? output.word : undefined);
答案 3 :(得分:0)
丽莎! 也许它可以帮助您...
const arrayOfWord=['@Robot','@Human','@Animal','@Hero']
const body = 'This is a try to found the @Human & the @Animal'
// Get the @Human index
indexOfHuman = arrayOfWord.indexOf('@Human')
//This line will get the value of @Human
valueOfHuman = arrayOfWord[indexOfHuman]
答案 4 :(得分:0)
您可以将单词数组映射到每个单词在字符串中出现的位置的索引数组。然后,您可以使用.reduce()
来查找数组中不是-1
的最小值。
请参见以下示例:
const arrayOfWord = ['@Robot','@Human','@Animal','@Hero'];
const body = 'This is a try to found the @Human & the @Animal';
const arrayOfIdx = arrayOfWord.map(wrd => body.indexOf(wrd))
const minItemIdx = arrayOfIdx.reduce((min, idx, i) =>
idx === -1 || (arrayOfIdx[min] !== -1 && arrayOfIdx[min] < idx) ? min : i, 0);
const res = arrayOfWord[minItemIdx];
console.log(res);