//是否有更好的方法来确定某个属性是否为真#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();
答案 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。