Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery对象递归和字符串匹配_Javascript_Jquery - Fatal编程技术网

Javascript Jquery对象递归和字符串匹配

Javascript Jquery对象递归和字符串匹配,javascript,jquery,Javascript,Jquery,我正在写一本圣经,我有两个问题。我想做的是允许某人输入一个语句,比如 起源 或 创世记4:20 或 Gen 4:20 等,然后能够找到这本书或经文,但也区别于其他术语,如 他很慷慨 到目前为止,我已经建立了一个对象来检查名称选项 var namesobj = { 0 : {'name' : [] }, 1 : {'name' : ['Genesis','Gen','Gn'] }, 2 : {'name' : ['Exodus','Exod','Ex'] }, 3

我正在写一本圣经,我有两个问题。我想做的是允许某人输入一个语句,比如

起源

创世记4:20

Gen 4:20

等,然后能够找到这本书或经文,但也区别于其他术语,如

他很慷慨

到目前为止,我已经建立了一个对象来检查名称选项

var namesobj = {
    0 : {'name' : [] },
    1 : {'name' : ['Genesis','Gen','Gn'] },
    2 : {'name' : ['Exodus','Exod','Ex'] },
    3 : {'name' : ['Leviticus','Lev','Lv'] },
    4 : {'name' : ['Numbers','Num','Nm'] },
    // etc...
}
我创建了一个函数来搜索字符串,并检查字符串是否与其中一个名称匹配

var evaluateStr = function(str){
    if(allowGet === true){ // if there is not already a search in progress
        var nameFound = false; // escape var
        if(!nameFound)
        $.each(namesobj, function(bookid,values){ // iterate over the books
            if(!nameFound)
            $.each(values, function(attr, items){ // iterate over the options
                if(!nameFound)
                $.each(items, function(key, name){ // iterate over the actual names
                    if(str == name){ // if the string matches the name
                        alert("Yay");
                        nameFound = true; // force .each breaks
                        return false;
                    }else{
                        alert("Do something else");
                    }
                });
            });
        });
    }
}
那么,我如何更改它以查看字符串中是否存在名称值,而不是名称是否等于字符串

其次

对我来说,我的功能似乎不是很有效,但我只知道这么做。有没有更好的方法来发现是否有圣经中的一本书存在于字符串中


提前感谢您愿意分享的任何见解。非常感谢您抽出时间。

您可以尝试一下。我已经设计了许多提前输入的搜索功能和一个圣经搜索引擎。这是我的见解:对书籍和参考文献与圣经经文使用单独的搜索/匹配功能。忽略标点符号,但在搜索诗歌文本时,至少需要5个字符(或两个术语都<5个字符)才能匹配。但是允许部分(子字符串)匹配和缩写(子字符串w/o元音)以及精确匹配为圣经中书籍的名称返回true。我知道可以使用Regex,但如何使用它根据对象值测试字符串。P.S。我的圣经搜索代码是134行,但如果我和你分享它们,那只会让你的搜索引擎变得无关紧要。你不应该模仿任何其他搜索引擎。创造性是你的搜索与其他搜索相比能够带来任何好处的唯一途径。因此,让你的搜索引擎更优秀的方法是让你自己思考功能/代码。祝你好运@约瑟夫迈尔斯+1+1的见解。。。非常感谢。虽然,我理解你所说的,我并不想复制任何人的代码,但看到一些代码将有助于构建我自己的代码。我有很多想法去创造一个属于我自己的,我只是不知道怎么做。我感谢你的坦率,但我希望你能重新考虑。