gpt4 book ai didi

javascript - 如何使用搜索过滤器形式搜索 JSON 数组?

转载 作者:行者123 更新时间:2023-11-30 12:51:21 25 4
gpt4 key购买 nike

我有一个 JSON 数组和一个带有多个过滤器的搜索表单。在此搜索表单中,我有 4 个用于过滤的选择下拉字段。我如何根据用户选择的内容搜索 JSON 数组,然后在他们点击提交按钮后显示结果?

例如,如果用户在“食物选择下拉菜单”字段中选择“汉堡”,并在“饮料选择下拉菜单”字段中选择“可乐”。我希望能够显示提供这两种商品的所有餐厅。这可能吗?

var restaurants = [
{"restaurant" : { "name" : "McDonald's", "food" : "burger", "drink" : "coke", "content" : "Lorem ipsum dolor sit amet" }},
{"restaurant" : { "name" : "KFC", "food" : "chicken", "drink" : "pepsi", "content" : "Lorem ipsum dolor sit amet" }},
{"restaurant" : { "name" : "Pizza Hut", "food" : "pizza", "drink" : "sprite", "content" : "Lorem ipsum dolor sit amet" }},
{"restaurant" : { "name" : "Dominos", "food" : "pizza", "drink" : "root beer", "content" : "Lorem ipsum dolor sit amet" }},
{"restaurant" : { "name" : "Popeyes", "food" : "chicken", "drink" : "mist", "content" : "Lorem ipsum dolor sit amet" }}
];

最佳答案

过滤数组的一种方法如下

function filter( restaurants, food, drink) { 

var result = [];

for( var i= 0, len = restaurants.length; i < len; i++) {
var el = restaurants.restaurant[i];

if( el.food === food && el.drink === drink ) {
result.push( el );
}
}

return result;
}

更实用的方式

可以使用Array原型(prototype)中定义的filter方法

function customFilter(food, drink) {
return function(el) {
var r = el.restaurant;
return r.food === food && r.drink === drink;
}
}

restaurants.filter( customFilter('Burger', 'Coke') );

复杂的通用过滤器

function customFilter(values) {
return function(el) {
var r = el.restaurant;
var keys = Object.keys( values );
var answer = true;

for( var i = 0, len = keys.length; i < len; i++) {
if( r[keys[i]] !== values[keys[i]] ) {
answer = false;
break;
}
}

return answer;
}
}

restaurants.filter( customFilter({'food':'Burger', 'drink': 'Coke'}) );

关于javascript - 如何使用搜索过滤器形式搜索 JSON 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20850204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com