javascript中有没有一种很好的方法可以从javascript对象(而不是数组)中删除虚假值?
在JavaScript中,可以使用nice.filter方法从数组中删除null或falsy值。到目前为止,我还没有找到从JavaScript对象中删除相同内容的方法 为什么会这样 目前,您可以为数组创建一个函数,如:javascript中有没有一种很好的方法可以从javascript对象(而不是数组)中删除虚假值?,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,在JavaScript中,可以使用nice.filter方法从数组中删除null或falsy值。到目前为止,我还没有找到从JavaScript对象中删除相同内容的方法 为什么会这样 目前,您可以为数组创建一个函数,如: function stripNulls(arr) { return arr.filter(Boolean); } 是否可以为JS对象创建类似的函数,或者过滤器在JS对象上的工作方式不实用。警告:这里提供了更好的答案。此外,由于下面的评论,应该警告用户使用delete可能会
function stripNulls(arr) {
return arr.filter(Boolean);
}
是否可以为JS对象创建类似的函数,或者过滤器在JS对象上的工作方式不实用。警告:这里提供了更好的答案。此外,由于下面的评论,应该警告用户使用delete可能会提供次优性能
在对象中过滤无效值稍微复杂一些。从表面上看,这将满足您的要求:
var arr=['apple',43,false];
var trueArr=arr.filterBoolean;
console.logtrueArr;
var obj={'title':'apple','id':43,'isOrange':false,'test':'asd'};
Object.keysobj
.filterkey=>!obj[键]
.forEachkey=>删除对象[key];
console.logobj 我可以对一个对象或数组执行x吗?答案通常是肯定的,而且它经常涉及某种形式的reduce 如果要过滤falsy值,可以执行以下操作: 函数过滤器FalsyObj{ return Object.keysobj.reduceac,key=>{ 如果obj[键]{ acc[键]=obj[键] } 返回acc }, {} } 常量testObj={ a:‘测试’, b:321, c:错 }
console.logfilterFalsystoBjfalsy值为0、未定义、null、false等
myArray
.map(item => {
// ...
})
// Get rid of bad values
.filter(Boolean);
通过传递布尔值,我们可以删除所有falsy值。对象没有可枚举项,比如数组。A for…in循环是您唯一的选择当前答案已就位。您是否希望使用一种方法,该方法不会像上面数组的推论那样发生变化?不太相关,但您的函数名称确实有误导性。如何使用这些要筛选的对象?避免删除@Bergi我们为什么要避免删除?很公平,我会添加一个编辑来说服用户接受Mark的答案,并提到潜在的删除性能问题。我更喜欢这个实现而不是我的。我建议编辑一个片段,只是为了证明概念。没关系。做了一些轻微的风格调整。