如何检查对象及其属性是否存在?
How to check if Object and its properties exist?
我从 API 电话中收到一个对象。我要检查:
- 如果对象存在
- 对象的属性是否有我要找的属性
假设我期待以下对象:
success.response.data.users.items.list
现在我想知道这个list
对象是否存在。
我试过:
typeof success.response.data.users.items.list !== "undefined"
我得到的错误:TypeError: Cannot read property 'data' of undefined
success.hasOwnProperty("response.data.users.items.list")
这总是计算为 false,因为 hasOwnProperty
显然无法检查多级对象。
success.response.data.users.items.hasOwnProperty("list")
我得到的错误:TypeError: Cannot read property 'data' of undefined
是否有任何现代且快速的检查方法?
如果您可以选择,optional chaining 是您的选择:
success?.response?.data?.users?.items?.list || {}
如果不是,您只需在尝试访问子对象之前检查每个对象是否存在 属性,或者使用带有默认值的 ES6 解构(尽管对于深层嵌套的对象来说相当粗糙):
const { response: { data: { users: { items: { list = {} } = {} } = {} } = {} } = {} } = success || {}
如果可选链接不是一个选项,您可以使用这些行中的内容:
success && success.response && success.response.data &&
success.response.data.users && success.response.data.users.items && success.response.data.users.items.list
我从 API 电话中收到一个对象。我要检查:
- 如果对象存在
- 对象的属性是否有我要找的属性
假设我期待以下对象:
success.response.data.users.items.list
现在我想知道这个list
对象是否存在。
我试过:
typeof success.response.data.users.items.list !== "undefined"
我得到的错误:
TypeError: Cannot read property 'data' of undefined
success.hasOwnProperty("response.data.users.items.list")
这总是计算为 false,因为
hasOwnProperty
显然无法检查多级对象。success.response.data.users.items.hasOwnProperty("list")
我得到的错误:
TypeError: Cannot read property 'data' of undefined
是否有任何现代且快速的检查方法?
如果您可以选择,optional chaining 是您的选择:
success?.response?.data?.users?.items?.list || {}
如果不是,您只需在尝试访问子对象之前检查每个对象是否存在 属性,或者使用带有默认值的 ES6 解构(尽管对于深层嵌套的对象来说相当粗糙):
const { response: { data: { users: { items: { list = {} } = {} } = {} } = {} } = {} } = success || {}
如果可选链接不是一个选项,您可以使用这些行中的内容:
success && success.response && success.response.data &&
success.response.data.users && success.response.data.users.items && success.response.data.users.items.list