【问题标题】:Finding exact string match inside of a larger string using Jquery使用 Jquery 在较大的字符串中查找精确的字符串匹配
【发布时间】:2018-02-19 18:56:29
【问题描述】:

我正在努力为这个问题找到一个好的解决方案。我目前正在使用 indexOf 来比较 2 个字符串,但问题是当我需要它返回完全匹配时它正在返回匹配的单词。字符串“topics”包含以下内容。 “电脑眼镜、眼镜、蓝光、白内障。”参见下面的示例。变量 selection 将在页面循环时返回字符串中匹配的短语之一。

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

            }

     });

});

问题是,当我尝试与“计算机眼镜”匹配时,它也与“眼镜”匹配。我需要一种更具体地与这些方法相匹配的方法。

我希望这是有道理的!

【问题讨论】:

    标签: jquery loops indexof


    【解决方案1】:

    不要将主题变量定义为字符串,而是将其定义为数组:

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

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

    【讨论】:

    • 我能够将我的字符串拆分成一个数组,并完成我想做的事情。感谢您的阵列创意!
    猜你喜欢
    • 1970-01-01
    • 2022-11-26
    • 2021-10-18
    • 1970-01-01
    相关资源
    最近更新 更多