Итак, скажем, у меня есть объект, который выглядит следующим образом:
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...
];
Когда я хотел иметь несколько параметров для поиска (name, ma c, ip) - для меня интуитивно понятно поместите несколько ||
(ИЛИ) в мою функцию фильтра, например:
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()
? или, может быть, вообще не занимаюсь ||
?