循环遍历数组以查找匹配并返回每个可能的解决方案

时间:2015-10-15 11:24:35

标签: javascript jquery

我有一个小的输入字段,每当在其中按下一个键时,该代码就被激活。但它现在只打印"发现了一些东西"当名称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');
        }
    }

3 个答案:

答案 0 :(得分:1)

只需使用indexOf在另一个字段中搜索一个字符串:

if(info[i].name.indexOf(textInput) != -1) {
如果在另一个内部找不到字符串,

indexOf将返回-1

您可以尝试在以下示例中的某个结果'balloon', 'ball', 'apple'中搜索某些字母:

&#13;
&#13;
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;
&#13;
&#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 nothinggi 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")
}