Javascript 删除对象中的错误值
我试图循环一个对象中的所有属性,删除所有错误,然后返回使用delete传入的对象。显然我做错了什么。。。这是我到目前为止写的代码Javascript 删除对象中的错误值,javascript,object,for-in-loop,Javascript,Object,For In Loop,我试图循环一个对象中的所有属性,删除所有错误,然后返回使用delete传入的对象。显然我做错了什么。。。这是我到目前为止写的代码 var obj = { a: undefined, b: "banana", c: 0, d: false, e: "", f: "apple", g: 23 } var truthy = function (obj) { for (var i in obj) { if (obj[i] === null || obj[i] ===
var obj = {
a: undefined,
b: "banana",
c: 0,
d: false,
e: "",
f: "apple",
g: 23
}
var truthy = function (obj) {
for (var i in obj) {
if (obj[i] === null || obj[i] === undefined) {
delete obj[i];
}
} return obj;
}
这是一个实际的问题:
创建一个函数,该函数接受一个对象,循环遍历其所有属性,并删除所有错误的属性。然后返回传入的对象。提示:删除
返回对象是多余的,因为您正在修改传入的对象。如果要返回一个新对象并过滤掉属性,请在函数中创建一个新对象,并将要保留的属性复制到其中。
您对falsy的定义与JavaScript的定义不完全一致。如果你想要和其他地方一样的谎言,就说“如果”!obj[i]。当然,假设这是你想要的,但不考虑假法尔西有点傻。
您的实际问题是什么?演示如下:
var obj={
答:未定义,
b:香蕉,
c:0,
d:错,
e:,
f:苹果,
g:23
}
var truthy=函数obj{
对于obj中的var i{
if!obj[i]{
删除obj[i];
}
}
返回obj;
};
console.logtruthyobj 根据MDN,falsy的意思是:
falsy值是在布尔上下文中求值时转换为false的值
JavaScript在布尔上下文中使用类型强制。
因此,如果要删除所有falsy值,请将条件更改为if!obj[i]检查falsy值并在下一行中删除
参考:
JsFiddle:
第条:
我会做uu.pickByobj,uu.identity;它将只返回具有真实值的对象这不会删除false,例如,这不被视为falsy吗?这是实际的问题:创建一个函数,该函数接受对象,循环其所有属性,并删除任何falsy。然后返回传入的对象。提示:在这种情况下,除了falsy的定义之外,您的代码看起来非常正确。对于皮带和支架,还可以防止处理原型链中的值hasOwnProperty@wildcrazy-听起来像是家庭作业!不管怎样,这回答了这个问题,这就像做一件事一样简单!obj[i]>
if (false)
if (null)
if (undefined)
if (0)
if (NaN)
if ('')
if (document.all) [1]