Javascript 如何使用.filter()搜索多个项目

Javascript 如何使用.filter()搜索多个项目,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我如何才能使它,使我可以搜索多个项目。现在我有它,所以它只能搜索名称,我想能够搜索id和名称 我尝试了多种解决方案,例如: 没有成功 代码: 它应该很简单,只需使用或(| |)运算符添加另一个条件 const [search, setSearch] = useState(''); const [masterDataSource] = useState(DataBase); const filteredDataSource = masterDataSource.filter((item) =&g

我如何才能使它,使我可以搜索多个项目。现在我有它,所以它只能搜索名称,我想能够搜索id和名称

我尝试了多种解决方案,例如: 没有成功

代码:


它应该很简单,只需使用
或(| |)
运算符添加另一个条件

const [search, setSearch] = useState('');
const [masterDataSource] = useState(DataBase);

const filteredDataSource = masterDataSource.filter((item) => {
  return (item.name.includes(search) || (item.id && item.id.includes(search))) // add the condition in or 
});

return ( 
 <TextInput 
  onChangeText = {text => setSearch(text)}
  value = {search}
 />
);
const[search,setSearch]=useState(“”);
const[masterDataSource]=useState(数据库);
常量filteredatasource=masterDataSource.filter((项)=>{
return(item.name.includes(search)|(item.id&&item.id.includes(search))//在或中添加条件
});
报税表(
设置搜索(文本)}
值={search}
/>
);

这是这个代码段,您可以检查多个脚本属性

const[search,setSearch]=useState(“”);
const[masterDataSource]=useState(数据库);
常量filteredatasource=masterDataSource.filter((项)=>{
返回item.name.includes(搜索)&&item.id==您的\u id;
});
返回(
设置搜索(文本)}
值={search}
/>

)
检查两个属性是否都包含搜索文本的子字符串

const dummyArr=[{
id:'123456788900',
名称:“AWD”,
公司:“HALDEX”,
},
{
id:'123456778800',
名称:“BWD”,
公司:“你好,世界”,
},
{
id:'1234568800',
名称:“BWDsa”,
公司:“你好,世界”,
}
]
const searchText=document.querySelector(“#search”)
searchText.onkeyup=函数($el){
const filterResult=dummyArr.filter(el=>el.id.includes($el.target.value)| el.name.includes($el.target.value))
console.log(filterResult)
}

item.name.includes(搜索)| | item.id.includes(搜索)
使用
lodash
软件包。这很好,而且很容易解决你的问题。@VLAZ已经试过了。当尝试键入内容时,它会抛出一个错误,其中包括undefined@Lmao12233如果您得到的错误
包含
未定义
,则您的
id
属性不是字符串。但是,表示您得到了未定义的
无法读取属性“includes”,这意味着没有名为
id
@VLAZ的属性,现在已修复。无论如何,谢谢你:)
{
    id: '1234567788900',
    name: 'AWD',
    company: 'HALDEX',
  },
const [search, setSearch] = useState('');
const [masterDataSource] = useState(DataBase);

const filteredDataSource = masterDataSource.filter((item) => {
  return (item.name.includes(search) || (item.id && item.id.includes(search))) // add the condition in or 
});

return ( 
 <TextInput 
  onChangeText = {text => setSearch(text)}
  value = {search}
 />
);