【发布时间】:2020-01-24 08:07:34
【问题描述】:
所以,假设我有一个如下所示的对象:
const DEVICES: { mac: string; name: string; ip: string; type: number }[] = [
{
mac: 'xx:xx:xx:xx:xx',
name: 'something',
ip: 'xx.xx.xx.xx.xx',
type: 0,
},
{
mac: 'xx:xx:xx:xx:yy',
name: 'something1',
ip: 'xx.xx.xx.xx.yy',
type: 1,
},
// and so on...
];
当我想要有多个可搜索参数(名称、mac、ip)时 - 我的直觉是将一些 ||(OR)放入我的过滤器函数中,例如:
DEVICES.filter((item) => {
return item.name.toLowerCase().indexOf(dataFromInputEvent.trim().toLowerCase()) >= 0
|| item.ip.toLowerCase().indexOf(dataFromInputEvent.trim().toLowerCase()) >= 0
|| item.mac.toLowerCase().indexOf(dataFromInputEvent.trim().toLowerCase()) >= 0;
})
.map(item, index) = {
return (
<SomeComponent
key={index}
type={item.type}
name={item.name}
mac={item.mac}
type={item.type}
/>
);
)}
如您所见,如果数据获得更多属性并且我要添加另一个参数进行搜索,我只需在过滤器函数中添加另一个|| 即可返回。有没有更优雅的方法来进行多参数搜索——最好不要重复相同的toLowerCase() 和indexOf()?或者可能完全不做|| 的事情?
【问题讨论】:
标签: javascript reactjs typescript ecmascript-6