0

JavaScript の関数を 2 つの場所で再利用しています。

このメソッド内で呼び出しを行い、json オブジェクト (データ) を取得します。

data[0].fields['status']

ケースの 1 つは、キー「ステータス」が存在せず、ハードコードされた値を使用する必要があることを知っていますが、コードは両方のケースで共有されているため、このケースをキャプチャする必要があります。

キーを安全にチェックする get メソッドはありますか?それが存在しない場合は、ハードコードされた値を使用しますか?

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

それとももっと良い方法がありますか?

4

3 に答える 3

2

in演算子を使用して、プロパティがオブジェクトに存在するかどうかを確認します。

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

の評価が false であるため、潜在的な値が true の場合は、単純なブール値評価を使用することもできます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 に答える