Javascript jQuery:在字符串中查找数组元素

时间:2013-06-12 03:10:29

标签: javascript jquery arrays

我认为我的问题相当简单,但我对Javascript不是很有经验。我想要做的是拉取页面的源代码并将其全部添加到变量中:

var sourcecode = document.documentElement.innerHTML;

然后我有一系列术语,我想搜索该变量:

var array = ['Huskers','Redskins','Texans','Rockets'];

我想为sourcecode变量中找不到的任何数组元素分配0,为任何变量分配1。因此,当搜索完成时,每个数组元素将由一个等于1或0的变量表示。任何人都可以给我一个关于我应该怎么做的提示?

谢谢!

2 个答案:

答案 0 :(得分:3)

有点神秘但做你需要的东西:

var source = 'lorem hello foo bar world';
var words = ['hello','red','world','green'];

words = words.map(function(w){ return +!!~source.indexOf(w) });

console.log(words); //=> [1, 0, 1, 0]

+!!~强制转换indexOf返回的值的多个布尔表示形式,与:

相同
return source.indexOf(w) == -1 ? 0 : 1;

但有点短。

请注意,indexOf也匹配字符串中的字符串,如果要匹配整个单词,可以将正则表达式与字边界\b一起使用:

words = words.map(function(w) {
  return +new RegExp('\\b'+ w +'\\b','gi').test(source);
});

答案 1 :(得分:1)

如果要在数组中查找元素,可以使用jquery $ .inArray()

http://jsfiddle.net/hgHy4/

$(document).ready(function() {

var array = ['Huskers','Redskins','Texans','Rockets'];

    alert($.inArray('Redskins', array));


});

如果找到,则返回数组内元素的索引号。如果未找到该元素,则返回-1