在meteor中我从mongodb数据库中获取数据,数据类似于
{
"a": {
"value": 1
},
"b": {
"value": 1
},
"c": {
}
}
我需要添加"值"的值从所有这些结果。然而,在c中它是未定义的,在某些情况下它是定义的,而在其他情况下它是不定义的。有没有办法将this的值设置为0或使用mongodb查询语法实现此目的的方法。
所以
var sum = a.value + b.value c.value
c.value未定义,需要被视为0。 " C"可以是任何名称,这种趋势至少是通过a-d,多个字段未定义。
答案 0 :(得分:2)
var sum = (obj.a && a.value || 0) + (obj.b && b.value || 0) + (obj.c && c.value || 0);
或者,如果您想迭代并总结数据对象的所有字段:
var sum = 0;
for (var i in obj) {
if (typeof obj[i].value === "number") {
sum += obj[i].value;
}
}
答案 1 :(得分:0)
只需添加另一个(更长的)方法,您就可以检查循环中是否存在该属性:
var obj = {
"a": {
"value": 1
},
"b": {
"value": 1
},
"c": {
}
};
var val = 0;
for (var i in obj) {
if (obj[i].hasOwnProperty('value')) {
val += obj[i].value;
}
};
console.log(val); // 2

答案 2 :(得分:-2)
在使用这些值之前,您不能只检查这些值是否为falsy / undefined?
var jsonResult = // Ajax request to fetch json.
if (!jsonResult.c)
{
jsonResult.c = 0
}