如何用变量组合名称检查JavaScript多维对象的属性是否存在?
问题解答
你之前的代码逻辑错误出在对变量的引用上,area是存储区域名称的变量,你误写成了area[productName],这根本不是你要检查的属性名。正确的验证需要分三层递进:
- 先确认
store自身包含area对应的属性 - 再确认该区域子对象自身包含
productName对应的属性 - 最后比对该属性的值是否等于
color
用&&连接这三个条件,利用逻辑与的短路特性,前面条件不满足时不会执行后续代码,避免出现访问不存在属性的报错。
正确代码如下:
const res = store.hasOwnProperty(area) && store[area].hasOwnProperty(productName) && store[area][productName] === color;
举个实际例子,假设:
area = 'area1'productName = 'my product name'color = 'red'
这段代码会依次验证:
store是否有'area1'属性 → 是store.area1是否有'my product name'属性 → 是- 该属性的值是否等于
'red'→ 是
最终res会返回true。
内容的提问来源于stack exchange,提问作者user3174311
相关产品推荐
相关产品推荐

