Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 无法对显示的筛选列表作出反应_Arrays_Reactjs_Search - Fatal编程技术网

Arrays 无法对显示的筛选列表作出反应

Arrays 无法对显示的筛选列表作出反应,arrays,reactjs,search,Arrays,Reactjs,Search,我正在构建一个食物列表应用程序,我一直在显示过滤后的部分 我有一份每道菜的菜品和配料清单。配料是食物列表数组中的一个数组。换句话说,这些成分是一个嵌套数组 所以我想做的是创建一个搜索栏。当你输入一种配料时,它会在搜索栏中显示一个含有与配料匹配的配料的菜品列表。例如,如果你输入意大利面,你会得到一个过滤过的可能菜肴列表,其中包括意大利面成分。因此,当用户在搜索栏中键入一种配料时,用户应该会看到在配料数组中包含该配料的菜肴列表 这是我的食物清单 [ { "food":

我正在构建一个食物列表应用程序,我一直在显示过滤后的部分

我有一份每道菜的菜品和配料清单。配料是食物列表数组中的一个数组。换句话说,这些成分是一个嵌套数组

所以我想做的是创建一个搜索栏。当你输入一种配料时,它会在搜索栏中显示一个含有与配料匹配的配料的菜品列表。例如,如果你输入意大利面,你会得到一个过滤过的可能菜肴列表,其中包括意大利面成分。因此,当用户在搜索栏中键入一种配料时,用户应该会看到在配料数组中包含该配料的菜肴列表

这是我的食物清单

[
  {
    "food": "Lox and Bagel",
    "ingredients": ["lox", "bagel", "cream cheese"]
  },
  {
    "food": "Sushi",
    "ingredients": ["rice", "salmon"]
  },
  {
    "food": "Spaghetti",
    "ingredients": ["pasta", "tomato sauce"]
  }
]
这是显示食物列表的函数。但是,我无法让它显示列表。我想我可能在这个函数的某个地方搞砸了:

showFood = () =>{
    this.props.filtered.map((eachFood, index) => {
      const lc = eachFood.ingredients.map(ingredient => ingredient.toLowerCase());
      const filter = this.state.searchInput.toLowerCase();
      if (eachFood.lc.includes(filter) === -1) {
        return(
          <DishBox
          key={index}
          dish={eachFood.food}
          ingredients={eachFood.ingredients}
          clickToDelete={this.deleteDish.bind(index)}
          />
        );
      }
    });
  }
showFood=()=>{
this.props.filtered.map((每个食物,索引)=>{
const lc=eachFood.components.map(component=>component.toLowerCase());
const filter=this.state.searchInput.toLowerCase();
if(每个食品的lc.包括(过滤器)=-1){
返回(
);
}
});
}

这里是我的链接。

您可以按如下所选的配料过滤菜肴

让我们选择greedient=“意大利面”;
让盘子=[
{
“食物”:“Lox和百吉饼”,
“配料”:[“lox”、“百吉饼”、“奶油奶酪”]
},
{
“食物”:“寿司”,
“配料”:[“大米”、“鲑鱼”]
},
{
“食物”:“意大利面”,
“配料”:[“意大利面”、“番茄酱”]
}
]
让filteredishs=碟子。过滤器(d=>d.配料。包括(selectedGredient))

console.log(过滤器添加)但我需要编辑代码以在键入配料之前和之后显示食物列表…因为
组件从它那里接收它需要的所有数据父级不需要在
状态下添加该道具。您可以使用上面的代码,我在您的代码沙盒上做了一些更改,我提供的更改是AspectedTanks!它现在可以工作了,我甚至对它进行了更多的编辑,以便将配料转换成小写,以防用户键入小写,而有些配料是大写的