Я хочу фильтровать и искать через Json, используя несколько ключевых слов. У меня это работает, когда есть только одно значение для проверки, но мне нужно использовать несколько фильтров поиска по ключевым словам.
В этом примере я хочу вернуть объекты, связанные с Wal-mart и Китаем, но НЕ Wal-Mart в США или Target в Китае.
Я создаю массив ключевых слов для фильтрации, используя Grep () и Map, в консоли. Однако я не могу понять синтаксис для проверки значения по ключевому слову (см. Мой комментарий ниже: «Это неправильно.»)
<!DOCTYPE html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
<script>
var keywords = ["China", "Wal-Mart"];//filter Json by these terms
var data = [
{
"name": "Store #1",
"country": "China",
"retailer": "Wal-Mart"
},
{
"name": "New Store #2",
"country": "China",
"retailer": "Wal-Mart"
},
{
"name": "Store Name US",
"country": "United States",
"retailer": "Wal-Mart"
},
{
"name": "Target #98237",
"country": "China",
"retailer": "Target"
}
]
var searchkeywords = $.grep(data, function(value,i) {
return value[i] === keywords[i];//<--- This is not right
//should be the equivalent of above keywords:
//return value.country.toLowerCase() === "china" && value.retailer.toLowerCase() === "wal-mart"
});
var keywordsearchresult = $.map(searchkeywords, function(value, i) {
return {
name: value.name,
country: value.country,
retailer: value.retailer
};
});
console.log(keywordsearchresult);//should return first 2 items
</script>
</head>
<body>
</body>
</html>
В моем приложении будет больше ключевых слов и элементов (тип, дата и т. Д.) В Json, это просто упрощенная версия. Я в основном хочу добавить много правил и условий в Grep.