2

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

var sourcecode = document.documentElement.innerHTML;

然后我有一组术语,我想在该变量中搜索:

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

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

谢谢!

4

2 回答 2

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);
});
于 2013-06-12T03:17:55.147 回答
1

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

http://jsfiddle.net/hgHy4/

$(document).ready(function() {

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

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


});

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

于 2013-06-12T03:18:45.663 回答