[英]How to search for more than one item with .filter()
我怎样才能做到这一点,以便我可以搜索多个项目。 现在我有它,所以它只能搜索名称,我希望能够搜索 id 和 name。
我尝试了多种解决方案,例如: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter没有成功。
代码:
const [search, setSearch] = useState('');
const [masterDataSource] = useState(DataBase);
const filteredDataSource = masterDataSource.filter((item) => {
return item.name.includes(search);
});
return(
<TextInput
onChangeText={(text) => setSearch(text)}
value={search}
/>
)
.
数据库
{
id: '1234567788900',
name: 'AWD',
company: 'HALDEX',
},
它应该很简单,只需使用or(||)
运算符添加另一个条件。
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(DataBase); const filteredDataSource = masterDataSource.filter((item) => { return item.name.includes(search) && item.id=== your_id; }); return( <TextInput onChangeText={(text) => setSearch(text)} value={search} /> )
检查两个属性是否包含搜索文本的 substring
const dummyArr = [{ id: '1234567788900', name: 'AWD', company: 'HALDEX', }, { id: '123456778800', name: 'BWD', company: 'hello world', }, { id: '1234568800', name: 'BWDsa', company: 'hello world', } ] const searchText = document.querySelector('#search') searchText.onkeyup = function($el) { const filterResult = dummyArr.filter(el => el.id.includes($el.target.value) || el.name.includes($el.target.value) ) console.log(filterResult) }
<input type="text" id="search" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.