多くの場合、リモート API 呼び出しからの応答で、ネストされたオブジェクトを受け取ります。
var response = {
data : {
users : [
{
name : 'Mr. White'
}
]
}
}
最初のユーザーの名前が「Mr. ホワイト」、そして当然のように何かを書きたいと思うでしょう。
var existed = response.data.users[0].name === 'Mr. White'
ただし、すべてのオブジェクトが存在するかどうかはわかりません。そのため、代わりに例外を回避するために、次のように記述します。
var existed = response && response.data && response.data.users && response.data.users[0].name === 'Mr. White'
これを行うより良い方法はありますか?頭に浮かぶ別の醜いオプションは次のとおりです。
var existed = false;
try {
var existed = response.data.users[0].name === 'Mr. White';
} catch(e) { }
バニラの JavaScript に加えて、通常は underscore.js と jquery も利用できます。
編集:
おっと、ネストされたオブジェクト key の存在について、javascript テストの複製を要求したことに気付きました。
これらの回答に基づく興味深いオプションは次のとおりです。
var existed = (((response || {}).data || {}).users || [{}])[0].name === 'Mr. White';