我正在检查object
是否包含用户属性,而用户阵列的第一个详细信息object
是否包含property
。
if (a.obj.twitter['user'] && Array.isArray(a.obj.twitter['user'])
&& a.obj.twitter['user'][0] && a.obj.twitter['user'][0].details[prop]
&& !b.obj.twitter['user'][0].details[prop]) {
我在检查! too?
时是否应该这样做?有更好的方法吗?
!b.obj.twitter['user'][0].details[prop]
答案 0 :(得分:1)
您可以在while noAnswer:
块中尝试此检查
try catch
答案 1 :(得分:1)
“当我检查时,我也应该这样做吗?”
是的,它会以同样的方式写出来,除了在开幕式之前有!
的parens:
if (a.obj.twitter['user'] &&
Array.isArray(a.obj.twitter['user']) &&
a.obj.twitter['user'][0] &&
a.obj.twitter['user'][0].details[prop] &&
!(b.obj.twitter['user'] &&
Array.isArray(b.obj.twitter['user']) &&
b.obj.twitter['user'][0] &&
b.obj.twitter['user'][0].details[prop])) {
但是...
“有更好的方法吗?”
我认为这值得推广到一个单独的函数中,只是为了保持可读性。
您可以执行以下操作:
function hasProp(o, prop) {
return !!(o.obj.twitter['user'] &&
Array.isArray(o.obj.twitter['user']) &&
o.obj.twitter['user'][0] &&
o.obj.twitter['user'][0].details[prop])
}
然后就是:
if (hasProp(a, prop) && !hasProp(b, prop)) {...