通常在远程 API 调用的响应中,我会收到嵌套对象:
var response = {
data : {
users : [
{
name : 'Mr. White'
}
]
}
}
我想检查第一个用户的名字是否是“先生”。White',自然会想写类似的东西。
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) { }
除了 vanilla javascript,我通常还有 underscore.js 和 jquery 可用。
编辑:
哎呀,注意到我问了一个javascript test 是否存在嵌套对象 key。
基于这些答案的一个有趣的选择是:
var existed = (((response || {}).data || {}).users || [{}])[0].name === 'Mr. White';