我在我的javascript中重用了两个地方的函数。
在这个方法中,我进行调用并检索json对象(数据)
data[0].fields['status']
在其中一个案例中,我知道密钥'status'不会出现,我需要使用硬编码值,但由于代码是针对这两种情况共享的,我需要捕获这种情况。
是否有一个get方法可以安全地检查密钥,如果它不存在,我会使用硬编码值吗?
data[0].fields.get('status') ?
或者有更好的方法吗?
答案 0 :(得分:2)
使用in
operator检查对象上是否存在属性:
if ('status' in data[0].fields) …
如果您的潜在价值是真实的,您也可以使用简单的布尔评估,因为undefined
的计算结果为false。即使在short-circuit evaluation:
return data[0].fields.status || defaultstate;
答案 1 :(得分:1)
常用:
var status = data[0].fields['status'] || "default";
正如所指出的,这可能会对 falsy 值产生不良行为。
另外,对于in
运算符,您可以使用hasOwnProperty
方法。
答案 2 :(得分:1)
if ( typeof data[0].fields['status'] === 'undefined' ) data[0].fields['status'] = 'hardcoded value';
// your code goes on here