我正在努力为这个问题找到一个好的解决方案。我目前正在使用indexOf比较2个字符串,但问题是当我需要它返回完全匹配时它返回匹配的单词。字符串"主题"包含以下内容。 "电脑眼镜,眼镜,蓝光,白内障。 "参见下面的示例。当变量选择循环遍历页面时,变量选择将返回字符串中的一个匹配短语。
var topics = "Computer Eyewear, Eyewear, Blue Light, Cataracts";
if ($('.post_wrapper').length > 0) {
$('.post_wrapper').find('.post_item').each(function() {
var selection = $(this).find('h2').html();
if (topics.indexOf(selection) >= 0) {
//do stuff here
}
});
});
问题在于,当我试图与" Computer Eyewear"它还与" Eyewear"相匹配。我需要一种能够更具体地匹配这些方法的方法。
我希望这是有道理的!
答案 0 :(得分:0)
不是将主题变量定义为字符串,而是将其定义为数组:
var topics = ["Computer Eyewear", "Eyewear", "Blue Light", "Cataracts"];
实际上,数组也有一个indexOf
方法,在你的情况下可以正常工作。
然而,有一种更有效的方法。为此,您将创建这些字符串作为属性名称:
var topics = {
"Computer Eyewear": 1,
"Eyewear": 1,
"Blue Light": 1,
"Cataracts": 1
};
使用此设置,if
条件必须更改为:
if (selection in topics) {
与第一种工作方法相比,增益仅在您需要验证的主题很多时才有意义。