如何检查文本中的任何单词是否在数组中?
给出一个完整的文本,如:
var nation = "Piazza delle Medaglie d'Oro 40121 Bologna Italy"
和给定的数组如:
["Afghanistan", "Italy", "Albania", "United Arab Emirates"]
我们怎样才能检查整个文本中的意大利语是否在array
?
按照这个SO答案,这就是我尝试过的,但是我得到了False
,而意大利在array
存在
var countries = []; $("#usp-custom-3 option").each(function() { var single = $(this).text(); countries.push(single); var foundPresent = countries.includes("Piazza delle Medaglie d'Oro 40121 Bologna Italy"); console.log(foundPresent); });
JsFiddle在这里
如果你在推送到数组时检查它,它甚至更简单,只需检查推送的元素:
const text = " I like Italy"; const nations=[]; function insert(single){ if( text.includes(single) /*may format single, eg .trim() etc*/){ alert("Nation in text!"); } nations.push(single); }
跑
如果您仍希望每次都检查整个数组,嵌套迭代可能会这样做:
let countries = ["Afghanistan", "Italy", "Albania", "United Arab Emirates"]; const text = " I like Italy"; let countriesInText = countries.filter( word => text.includes( word ) ); //["Italy"]
跑
性能与Rajeshs的回答相比
如果您只关心是否,可以使用.some()而不是.filter() 。
由于您需要在数组中搜索包含单词的字符串,因此最好选择使用正则表达式并使用string.match(regex)
来获取匹配的单词。
var nation = `Piazza delle Medaglie d'Oro 40121 Bologna Italy`; //var nation = "Piazza delle Medaglie d'Oro 40121 Bologna Italy"; var countries = ["Afghanistan", "Italy", "Albania", "United Arab Emirates"]; var regex = new RegExp(countries.join("|"), "i"); console.log(nation.match(regex))
var nation = "Piazza delle Medaglie d'Oro 40121 Bologna Italy"; searchStringInArray("Italy", nation); function searchStringInArray (str, strArray) { for (var j=0; j
此脚本将比较var nation中的每个单词与您提供的所有数组元素。 我希望这能解决你的问题
$(function () { try { var nation = "Piazza delle Medaglie d'Oro 40121 Bologna Italy"; var I = ["Afghanistan", "Italy", "Albania", "United Arab Emirates"] for (var index = 0; index < I.length; index++) { if (nation.toString().toUpperCase().indexOf(I[index].toString().toUpperCase()) >= 0) { console.log(I[index].toString()); } } } catch (err) { console.log(err); } });
试试这个。