2014-12-17 1 views
1

мне нужно фильтровать JSON как это:фильтр в JSON и ответ с другой JSON

{ 
    "suggestions":[ 
     "futebol brasileiro", 
     "futebol americano", 
     "futebol", 
     "musica", 
     "musicas", 
     "musica inedita de raul", 
     "politica entre dilma e aecio", 
     "politica", 
     "politica macroeconomica" 
    ] 
} 

Когда я типа «Pol» в поле ввода, мне нужно, чтобы получить этот JSON:

{ 
    "suggestions":[ 
     "politica entre dilma e aecio", 
     "politica", 
     "politica macroeconomica" 
    ] 
} 

Как это сделать, используя чистый Javascript?

Я сделал это в JQuery:

var url = "/busca/suggests/?q="+query; 
$.getJSON(url, function (data) { 
    for(var i=0; i < data.length; i++) { 
     people[i] = accent_fold(data[i]); 
    } 
}); 

//Case insensitive search for our people array 
var results = $.grep(people, function(item){ 
    return item.search(RegExp(query, "i")) != -1; 
}); 
+0

Почему вы можете» t использовать jQuery? – Ragnar

+0

'var results = people.filter (function (item) {...});'? –

ответ

1

Если вы можете использовать ECMAScript 5 ...

В противном случае: Polyfill for Array.prototype.filter()

(function() { 
 
    var base = { 
 
    "suggestions": [ 
 
     "futebol brasileiro", 
 
     "futebol americano", 
 
     "futebol", 
 
     "musica", 
 
     "musicas", 
 
     "musica inedita de raul", 
 
     "politica entre dilma e aecio", 
 
     "politica", 
 
     "politica macroeconomica" 
 
    ] 
 
    }; 
 

 
    var myResults = {}; 
 
    var txtBox = document.getElementById("search"); 
 
    var myDisplay = document.getElementById("displayResults"); 
 
    txtBox.onkeyup = getResults; 
 

 
    function getResults() { 
 
    var myInput = txtBox.value; 
 
    myDisplay.innerHTML = ""; 
 
    var re = new RegExp(myInput, "gi"); 
 
    myResults.suggestions = base.suggestions.filter(function(ele) { 
 
     return ele.search(re) != -1; 
 
    }); 
 

 
    if (myResults.suggestions != "") { 
 
     myDisplay.innerHTML = JSON.stringify(myResults); 
 
    } 
 
    } 
 

 
})();
#displayResults { 
 
    margin-top: 20px; 
 
} 
 
#displayResults { 
 
    font-family: sans-serif; 
 
}
<input type="text" id="search" placeholder="Type your search" /> 
 
<div id="displayResults"></div>