node js对象属性 - 找到空元素

时间:2015-03-27 11:42:33

标签: node.js

我有一个名为 obj 的对象,它有20个特性。因为我使用json xml2js构建器构建XML,所以我只想插入那些非空的。我有以下代码(变量结果有来自db的sql查询结果,有时它会发生,对象中的属性是未定义的,我想避免)。

var obj = [] ;
 for (var i = 0; i < Object.keys(result[0]).length; i++) { 
    var value = (result[0])[Object.keys(result[0])[i]];
    obj[i] = value;
    }

什么是最快的解决方案?使用try / catch会使应用程序变慢,或者?

2 个答案:

答案 0 :(得分:1)

小提琴会很好。如果它绝对是一个对象,最好使用var in循环,例如:

for (var i in result[0]) { 
     if (result[0][i]) {
         console.log(i, result[0], result[0][i]);
     }
}

因此,您可以获取键值对,并检查该值是否为假值。

答案 1 :(得分:0)

我不担心速度,但是可读性和惯用性。在Python中,有一种强烈偏向于尝试某种东西,然后在抛出它时处理异常。

我认为javascript没有任何偏见。

上面显式检查null或undefined(或添加空字符串)的循环可以正常工作。当你删除值为0或空字符串的属性时,检查falsy值是不够的。

for (var i in result[0]) {
  if (result[0][i] === null || result[0][i] === undefined) {
    delete result[0][i];
  }
}

如果您的对象来自其他原型,您可能还需要进行额外检查以确保该属性不会被继承:

obj.hasOwnProperty(i)