我正在尝试在解码的JSON数组中添加一堆元素:
var jqXHR = $.getJSON("data.php", function(jsonData) {
newItems = jsonData['New']['count'] || 0;
unsolvedItems = (jsonData['New']['count'] || 0)+
(jsonData['b']['count'] || 0)+
(jsonData['c']['count'] || 0)+
(jsonData['d']['count'] || 0)+
(jsonData['e']['count'] || 0)+
(jsonData['f']['count'] || 0)+
(jsonData['g']['count'] || 0);
}
正如您所看到的,我正在尝试检查['count']
元素是否存在,然后我尝试将值分配给某些内容,使用的是on this site解释的简写,但是|| 0
速记似乎不起作用。当['New']
未包含在JSON中时,我会获得Uncaught TypeError: Cannot read property 'count' of undefined
。
这不适用于数组,还是我做错了?如果它不起作用,除了对我想要使用的每个元素使用单独的if语句之外还能做什么?
答案 0 :(得分:2)
问题是如果jsonData['d']['count']
为jsonData['d']
,则无法获得undefined
。
您的代码也充满了重复。这种代码很难维护。
你可以这样做:
unsolvedItems = 0;
['New','b','c','d','e','f','g'].forEach(function(key){
if (jsonData[key]) unsolvedItems += jsonData[key].count || 0;
});
答案 1 :(得分:0)
我通常选择的模式:
jsonData['b'] && jsonData['b']['count'] || 0