Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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字符串中搜索类似值_Javascript - Fatal编程技术网

在javascript字符串中搜索类似值

在javascript字符串中搜索类似值,javascript,Javascript,我有一个javascript脚本字符串,如下所示 var name = "John Peter James"; inputValue = "Pe Jame"; //returns true inputValue = "Pes James"; // returns false inputValue = "John"; //returns true inputValue = "Joh Pete Ja"; //returns true inputValue = "Jon Peter James";

我有一个javascript脚本字符串,如下所示

var name = "John Peter James";
inputValue = "Pe Jame";  //returns true
inputValue = "Pes James"; // returns false
inputValue = "John"; //returns true
inputValue = "Joh Pete Ja"; //returns true
inputValue = "Jon Peter James"; // returns false
inputValue = "John John"//returns false
现在我还有一个输入字段

<input type="text" id="searchForNames" />
var inputVal = "Pe Jame";
“Pe”是“Peter”的开头,“Jame”也是“James”的开头

我想搜索字符串
name
中的每个单词,如果它以输入值中的每个单词开头,类似这样

var name = "John Peter James";
inputValue = "Pe Jame";  //returns true
inputValue = "Pes James"; // returns false
inputValue = "John"; //returns true
inputValue = "Joh Pete Ja"; //returns true
inputValue = "Jon Peter James"; // returns false
inputValue = "John John"//returns false

您需要使用分割方法来制作这些单独的零件

var myString = "pe jame";
var result = myString.split(" ");
spit中的参数是分隔符

function stringSplit() { 
    var name = "john peter james";
    var myString = "pe jame";
    var result = myString.split(" ");
    var nameSplit = name.split(" ");
    var isTrue = false;

    for (var q = 0; q < result.length; q++) {
        for (var i = 0; i < nameSplit.length; i++) {
            if (nameSplit[i].startsWith(result[q])) {
                isTrue = true;
                break;
            }
            else {
                isTrue = false;
            }
        }
    }
}
函数stringSplit(){
var name=“约翰·彼得·詹姆斯”;
var myString=“pe jame”;
var result=myString.split(“”);
var nameSplit=name.split(“”);
var isTrue=假;
对于(var q=0;q

这不是完美的,但我确实认为它很接近,很抱歉回复太晚。这需要一些思考。

您将希望使用拆分方法来制作这些单独的零件

var myString = "pe jame";
var result = myString.split(" ");
spit中的参数是分隔符

function stringSplit() { 
    var name = "john peter james";
    var myString = "pe jame";
    var result = myString.split(" ");
    var nameSplit = name.split(" ");
    var isTrue = false;

    for (var q = 0; q < result.length; q++) {
        for (var i = 0; i < nameSplit.length; i++) {
            if (nameSplit[i].startsWith(result[q])) {
                isTrue = true;
                break;
            }
            else {
                isTrue = false;
            }
        }
    }
}
函数stringSplit(){
var name=“约翰·彼得·詹姆斯”;
var myString=“pe jame”;
var result=myString.split(“”);
var nameSplit=name.split(“”);
var isTrue=假;
对于(var q=0;q

这不是完美的,但我确实认为它很接近,很抱歉回复太晚,这需要一些思考。

只需写下你的意思,即输入的每一部分都有一个名称部分的前缀

input.split(' ').every(isPrefixInName)
哎呀,现在我们必须写
isPrefixInName
。输入的一部分是
name
中的前缀(如果有) 一些以输入的该部分开头的单词

function isInInput(inputPart) {
  return name.split(' ').some(namePart => namePart.startsWith(inputPart));
}

只要写下你的意思,也就是说,输入的每一部分都有名称某一部分的前缀

input.split(' ').every(isPrefixInName)
哎呀,现在我们必须写
isPrefixInName
。输入的一部分是
name
中的前缀(如果有) 一些以输入的该部分开头的单词

function isInInput(inputPart) {
  return name.split(' ').some(namePart => namePart.startsWith(inputPart));
}
用这个

newInputValue = inputValue.split(' ');
newName = name.split(' ');
for(var i = 0; i < newInputValue.length; i++){
    newValue = newInputValue[i];
    for(var x = 0; x < newName.length; x++){
        eachName = newName[x];
        if(eachName.startsWith(newValue))
            return true;
        else
            return false;
    }
}
newInputValue=inputValue.split(“”);
newName=name.split(“”);
对于(变量i=0;i
使用此

newInputValue = inputValue.split(' ');
newName = name.split(' ');
for(var i = 0; i < newInputValue.length; i++){
    newValue = newInputValue[i];
    for(var x = 0; x < newName.length; x++){
        eachName = newName[x];
        if(eachName.startsWith(newValue))
            return true;
        else
            return false;
    }
}
newInputValue=inputValue.split(“”);
newName=name.split(“”);
对于(变量i=0;i
您也可以使用正则表达式。这将帮助您忽略区分大小写

var arr=[“pejame”、“Pes James”、“Jon”、“Joh Pete Ja”、“Jon Peter James”、“John Jon”];
函数searchValues(){
var search=document.getElementById('txtSearch').value;
var r=new RegExp(search.replace(//g,“|”),“i”);
document.getElementById('result').innerHTML=JSON.stringify(arr.filter(x=>r.test(x)),null,4)
}

搜寻

您也可以使用正则表达式。这将帮助您忽略区分大小写

var arr=[“pejame”、“Pes James”、“Jon”、“Joh Pete Ja”、“Jon Peter James”、“John Jon”];
函数searchValues(){
var search=document.getElementById('txtSearch').value;
var r=new RegExp(search.replace(//g,“|”),“i”);
document.getElementById('result').innerHTML=JSON.stringify(arr.filter(x=>r.test(x)),null,4)
}

搜寻

正如其他人所说,我们可以使用RegExp来实现这一点


简单的正则表达式应该是
/^您在这里的输入。*/

正如其他人所说的,我们可以使用RegExp来实现这一点


简单的正则表达式应该是
/^您在这里的输入。*/

那么我下一步该怎么办?@torazaburo为answer添加了可能的解决方案那么我下一步该怎么办?@torazaburo为answer添加了可能的解决方案我猜您在函数中有一些语法错误,请尝试修复它好吗?@theking很抱歉,修正了。但我总是得到一个假的,即使它是真的。我这样做了
found=username.split(“”).every(IsInInput)
console.log(已找到)
我会在有机会的时候再讨论这个问题,但与此同时,尝试自己调试它可能会很有教育意义。我猜你在函数中有一些语法错误,请你尝试修复它好吗?@国王很抱歉,修复了。但我总是得到一个false,即使它是真的。我这样做了
found=username.split(“”).every(IsInInput)
console.log(已找到)我会在有机会的时候再讨论这个问题,但与此同时,尝试自己调试它可能是有教育意义的。我认为这不管用。对于“Pe Jame”,它返回
false
,而应该返回true。在第一次迭代之后,您将退出循环。我认为这不起作用。对于“Pe Jame”,它返回
false
,而应该返回true。在第一次迭代后,您将退出循环。如果字符串名称中的每个单词都以输入值中的每个单词开头,我将搜索它。根据你的例子,你似乎说错了。您似乎想说我想检查输入中的每个单词是否都是
name
中某个单词的开头。我想搜索字符串名称中的每个单词,如果它以输入值中的每个单词开头。你好像说错了,巴斯