我有一个小的输入字段,每当在其中按下一个键时,该代码就被激活。但它现在只打印"发现了一些东西"当名称exacly与你在输入字段中输入的内容匹配时。
当我输入类似" b"它已经删除了没有" b"在名称中打印每个可能的匹配,仍然有" b"。
我找到匹配的小代码。
Info是我的json大数组,我可以使用info [i] .name
遍历所有名称var textInput = $findperson.find('input').val();
console.log(textInput);
for (i = 1; i < info.length; i++) {
if (textInput === info[i].name) {
console.log('found something');
}
}
答案 0 :(得分:1)
只需使用indexOf
在另一个字段中搜索一个字符串:
if(info[i].name.indexOf(textInput) != -1) {
如果在另一个内部找不到字符串, indexOf
将返回-1
。
您可以尝试在以下示例中的某个结果'balloon', 'ball', 'apple'
中搜索某些字母:
var results = ['balloon', 'ball', 'apple'];
function filterResults() {
var input = document.getElementById('input').value;
var resultsFiltered = results.filter(function(a) {
return a.indexOf(input) != -1;
});
var result = ''; resultsFiltered.map(function(a) {
result += a + '<br/>';
}); document.getElementById('result').innerHTML = result;
}
&#13;
<input id='input' onkeyup='filterResults();'/>
<div id='result'></div>
&#13;
答案 1 :(得分:1)
我会像这样使用正则表达式:
var textInput = $findperson.find('input').val();
var regex = new Regexp(".*("+textInput+").*","i");
var filtered = info.filter(function (current) {
return current.name.match(regex);
});
console.log(filtered);
答案 2 :(得分:1)
如果找到任何匹配项设置标记并打印它们,否则打印found nothing
,
gi
g
表示全局搜索,i
表示忽略A
匹配a
和vise verse的案例。
var textInput = $findperson.find('input').val();
console.log(textInput);
found = false
for (i = 1; i < info.length; i++) {
if (info[i].name.match(new RegExp(textInput,"gi")) ) {
console.log(info[i].name);
found = true
}
}
if(!found){
console.log("found nothing")
}