I want to filter users by name and or lastname. but I´m getting
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())
)
how can I check for lastname only if user has lastname. (i know they always have name)
Variant A: lastName
check only if lastName
is set:
users.filter((user) =>
user.name
.toLowerCase()
.includes(searchName.toLowerCase())
&& (
!user.lastname
|| user.lastname
.toLowerCase()
.includes(searchLastName.toLowerCase())
)
)
Variant B: additional condition that lastName
must be set:
users.filter((user) =>
user.name
.toLowerCase()
.includes(searchName.toLowerCase())
&& user.lastname
&& user.lastname
.toLowerCase()
.includes(searchLastName.toLowerCase())
)
)
You can add a check on the existence of the variable with JS automatic boolean coercion:
&& user.lastname // This will return false if empty, null or undefined
&& user.lastname
.toLowerCase()
.includes(searchLastName.toLowerCase())
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.