根据条件将"状态"设置为"阵列过滤器"值



所以我想在下面的senario 中对对象中非空字符串的值使用array.filter

setData(
_.filter(rows, item => {
return (
item.firstName.toLowerCase().includes(filterTable.searchByName.toLowerCase()) &&
item.email.toLowerCase().includes(filterTable.searchByEmail.toLowerCase()) &&
item.cognitoId.toLowerCase().includes(filterTable.searchByCognitoId.toLowerCase()) &&
item.mfaEnabled.toString() === filterTable.searchByMfa.toString()
);
})
);

我可以使用ifelse来确定有什么值,但这将是一个漫长的ifelse

在上面的代码中,我想在_中添加那些项。filter的值是!== ''

例如,如果filterTable.email === '',那么我想要以下

setData(
_.filter(rows, item => {
return (
item.firstName.toLowerCase().includes(filterTable.searchByName.toLowerCase()) && 
item.cognitoId.toLowerCase().includes(filterTable.searchByCognitoId.toLowerCase()) &&
item.mfaEnabled.toString() === filterTable.searchByMfa.toString()
);
})
);

为搜索属性添加另一个&&

试试这个

setData(
_.filter(rows, item => {
return (
filterTable?.searchByName &&
item.firstName
.toLowerCase()
.includes(filterTable.searchByName.toLowerCase()) &&
filterTable?.searchByEmail &&
item.email
.toLowerCase()
.includes(filterTable.searchByEmail.toLowerCase()) &&
filterTable?.searchByCognitoId &&
item.cognitoId
.toLowerCase()
.includes(filterTable.searchByCognitoId.toLowerCase()) &&
item.mfaEnabled.toString() === filterTable.searchByMfa.toString()
);
})
);

这修复了它,感谢Amila帮助

setData(
_.filter(rows, item => {
return (
(filterTable?.searchByName !== ''
? item.firstName.toLowerCase().includes(filterTable.searchByName.toLowerCase()) ||
item.lastName.toLowerCase().includes(filterTable.searchByName.toLowerCase())
: true) &&
(filterTable?.searchByEmail !== ''
? item.email.toLowerCase().includes(filterTable.searchByEmail.toLowerCase())
: true) &&
(filterTable?.searchByCognitoId !== ''
? item.cognitoId.toLowerCase().includes(filterTable.searchByCognitoId.toLowerCase())
: true)
);
})
);

最新更新