繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM