如果未定义,则在数学中将值设置为0

时间:2015-12-13 20:58:05

标签: javascript json mongodb

在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,多个字段未定义。

3 个答案:

答案 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 
}