大家好,我是初学者。我想在我的状态中搜索哪个对象数组,我为搜索编写了以下函数。第一次搜索时效果非常好。
但是,当我第二次尝试搜索它时,因为" tempdata"现在处于状态。有人可以帮我排序吗?
以下是我的代码,请先了解一下谢谢。
categorySearch(event){
let tempdata=[];
this.state.data.map((categoryObject,index) => {
if(categoryObject.name.includes(event.target.value)){
tempdata.push(categoryObject);
}
this.setState({data:tempdata});
});
}
答案 0 :(得分:1)
我认为filter
是一个更好的选择,而不是map
?
Filter返回一个新数组,其中包含传递内部条件的所有项 - 在您的情况下为String includes
方法。
categorySearch(event){
const filteredElements =
this.state.data.filter(categoryObject => categoryObject.name.includes(event.target.value));
this.setState({filteredElements: filteredElements});
}
此外,我建议您不要修改原始数据,并使用状态filteredElements
中的新密钥来存储与搜索查询匹配的所有搜索结果。这样,如果您想进行第二次搜索,所有原始数据仍然可用。