我有一个看起来像这样的javascript脚本字符串
var name = "John Peter James";
现在我还有一个输入字段
<input type="text" id="searchForNames" />
假设用户在输入字段
中键入此值var inputVal = "Pe Jame";
而“Pe”是“彼得”的开头而“Jame”也是“詹姆斯”的开头
我想搜索字符串name
中的每个单词,如果它以输入值中的每个单词开头,就像这样
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
答案 0 :(得分:0)
您将需要使用拆分方法来制作这些单独的部分
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;
}
}
}
}
这不完美,但我确实认为它很接近,对于迟到的回复感到遗憾。这需要一些思考。
答案 1 :(得分:0)
只需写下您的意思,即输入的每个部分都是名称某些部分的前缀。
input.split(' ').every(isPrefixInName)
糟糕,现在我们必须写isPrefixInName
。输入的一部分是name
中的前缀(如果有)
一些字,其中以输入的那部分开头。
function isInInput(inputPart) {
return name.split(' ').some(namePart => namePart.startsWith(inputPart));
}
答案 2 :(得分:0)
使用此
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;
}
}
答案 3 :(得分:0)
您也可以使用正则表达式。这将有助于您忽略区分大小写
var arr = ["Pe Jame", "Pes James", "John", "Joh Pete Ja", "Jon Peter James", "John John"];
function 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)
}
<input type="text" id="txtSearch" />
<button onclick="searchValues()">Search</button>
<pre id="result"></pre>
答案 4 :(得分:0)