使用Jquery在更大的字符串中查找精确的字符串匹配

时间:2018-02-19 18:56:30

标签: jquery loops indexof

我正在努力为这个问题找到一个好的解决方案。我目前正在使用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"相匹配。我需要一种能够更具体地匹配这些方法的方法。

我希望这是有道理的!

1 个答案:

答案 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) {

与第一种工作方法相比,增益仅在您需要验证的主题很多时才有意义。