我想用名字或姓来过滤用户,但我得到的是
TypeError: Cannot read property 'toLowerCase' of undefined
const users = [{name: 'john', lastname: "doe"}, {name: 'mary'}]
let searchName = "jo"
let searchLastName = ""
users.filter((user) =>
user.name
.toLowerCase()
.includes(searchName.toLowerCase())
&& user.lastname
.toLowerCase()
.includes(searchLastName.toLowerCase())
)
我如何才能检查只有当用户有姓的时候才检查姓。(我知道他们总是有名字)
变体A。lastName
只检查是否 lastName
是设定的。
users.filter((user) =>
user.name
.toLowerCase()
.includes(searchName.toLowerCase())
&& (
!user.lastname
|| user.lastname
.toLowerCase()
.includes(searchLastName.toLowerCase())
)
)
备选案文B:附加条件: lastName
必须设置。
users.filter((user) =>
user.name
.toLowerCase()
.includes(searchName.toLowerCase())
&& user.lastname
&& user.lastname
.toLowerCase()
.includes(searchLastName.toLowerCase())
)
)
你可以用JS自动布林胁迫添加检查变量的存在。
&& user.lastname // This will return false if empty, null or undefined
&& user.lastname
.toLowerCase()
.includes(searchLastName.toLowerCase())