我有一个项目状态,它是一个包含以下数据的数组类型。
使用此数据,我需要根据与 company_name
、project_name
、project_description
、 匹配的搜索输入来过滤用户的结果>release_name
,和release's description
this.state = {
projects: [],
searchfield: ''
};
onSearchChange = (event) => {
this.setState({ searchfield: event.target.value })
}
<input type="text" placeholder="Search" className="form-control search-input" onChange={this.onSearchChange.bind(this)} />
render() {
return(
const filterProjects = this.state.projects.filter(data => {
// filter projects based on project's name
return data.project_name.toLowerCase().includes(this.state.searchfield.toLowerCase());
})
)
}
目前,我只能根据与项目名称匹配的关键字来过滤结果。
我可以使用其他属性或添加条件来根据其他属性过滤数据吗?
最佳答案
如果您想查看这些字段中是否存在术语,您可以使用 Array#some()
const filterFields = ['company_name', 'project_name', 'project_description', 'release_name', 'descrip'];
const { projects, searchfield) = this.state;
const term = searchfield.toLowerCase();
const filterProjects = projects.filter(data => {
return filterFields.some(field => data[field].toLowerCase().includes(term))
});
关于javascript - 在 react 中,如何使用条件来创建自定义搜索功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52174230/