循环访问用户对象以确保每个值都为true。如果不成立,请将其从对象中删除

时间:2015-09-22 21:59:41

标签: javascript loops

//是否有更好的方法来确定某个属性是否为真#39;或者“假”'

function truthyObjLoop(user){
    user = {name:"Emmanuel", age:24, country:"Nigeria"};

    for (var key in user) {
        if (user[key])
            return user[key];
      }
      delete user[key];
}

truthyObjLoop();

1 个答案:

答案 0 :(得分:1)

如果你想要删除所有" falsy"来自对象的属性,那么这段代码应该:

function removeFalsyProps(obj) {
      for (var key in obj) {
            if(!obj[key]) {
                  delete obj[key];
            }
      }

      return obj;
}

尝试使用以下对象调用上面的函数:

{ name: "Emmanuel", age: 24, isFalse: false, isNull: null, country: "Nigeria" }

这将调整对象,以便删除所有虚假属性:

{ name: "Emmanuel", age: 24, country: "Nigeria" }

请注意,由于JavaScript通过引用处理对象,因此调整传递给removeFalsyProps的对象,即不需要像我在代码中那样实际返回它。我只是觉得它更明确。如果您不想更改原始对象,则应考虑先复制/克隆它。

另请注意,如果您拥有count: 0这样的属性,也会被删除,因为0是假的..但也许这是理想的行为?

此外(取决于您的对象结构, - 继承和 - 创建),您可能需要执行hasOwnProperty - 检查。有关其他信息,请参阅MDN或此post或此blog post