0

我在我的 javascript 中为两个地方重用了一个函数。

在此方法中,我拨打电话并检索 json 对象(数据)

data[0].fields['status']

在其中一种情况下,我知道关键的“状态”不存在,我需要使用硬编码值,但由于两种情况的代码是共享的,我需要捕获这种情况。

是否有一种 get 方法可以安全地检查密钥,如果它不存在,我将使用硬编码值?

data[0].fields.get('status') ?

还是有更好的方法?

4

3 回答 3

2

使用in运算符检查对象上是否存在属性:

if ('status' in data[0].fields) …

如果您的潜在价值是真实的,您也可以使用简单的布尔评估,因为undefined评估为假。您甚至可以在短路评估中使用它:

return data[0].fields.status || defaultstate;
于 2012-09-22T12:33:21.637 回答
1

通常:

var status = data[0].fields['status'] || "default";

正如所指出的,这可能会产生虚假值的不良行为。

此外,除了in运算符之外,您还可以使用hasOwnProperty方法。

于 2012-09-22T12:33:05.183 回答
1
if ( typeof data[0].fields['status'] === 'undefined' ) data[0].fields['status'] = 'hardcoded value';
// your code goes on here
于 2012-09-22T12:33:51.690 回答