如何检查文本中的任何单词是否在数组中?

rob*_*b.m 2 javascript jquery

给出一个完整的文字,如:

var nation = "Piazza delle Medaglie d'Oro
40121 Bologna
Italy"
Run Code Online (Sandbox Code Playgroud)

和给定的数组如:

 ["Afghanistan", "Italy", "Albania", "United Arab Emirates"]
Run Code Online (Sandbox Code Playgroud)

我们怎样才能检查整篇文章中的意大利语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); 
  });
Run Code Online (Sandbox Code Playgroud)

JsFiddle在这里

Jon*_*lms 5

如果你检查每次推送到一个数组,它甚至更简单,只需检查推送元素:

const text = " I like Italy";
const nations=[];

function insert(single){
 if( text.includes(single) /*may format single, e.g. .trim() etc*/){
   alert("Nation in text!");
 }
 nations.push(single);
}
Run Code Online (Sandbox Code Playgroud)


如果您仍希望每次检查整个数组,嵌套迭代可能会这样做:

let countries = ["Afghanistan", "Italy", "Albania", "United Arab Emirates"];
const text = " I like Italy";

let countriesInText = countries.filter( word => text.includes( word ) );
//["Italy"]
Run Code Online (Sandbox Code Playgroud)

性能与Rajeshs的回答相比

如果您只关心是否,可以使用.some()而不是.filter().