Javascript JS在对象上迭代并删除启用的false
我有一个具有以下结构的动态对象:Javascript JS在对象上迭代并删除启用的false,javascript,Javascript,我有一个具有以下结构的动态对象: { a: { someKey: { propOne: '', enabled: true } }, b: { someKey: { propOne: '', enabled: false } }, c: { someKey: { propOne: '', enabled: false } }, someKey: { ab: { propOne: '
{
a: {
someKey: {
propOne: '',
enabled: true
}
},
b: {
someKey: {
propOne: '',
enabled: false
}
},
c: {
someKey: {
propOne: '',
enabled: false
}
},
someKey: {
ab: {
propOne: '',
enabled: true
}
}
}
我需要删除启用了false的树。因此,在上述示例中,结果应为:
const result = {
a: {
someKey: {
propOne: '',
enabled: true
}
},
d: {
someKey: {
propOne: '',
enabled: true
}
}
}
我如何才能做到这一点?使用lodash:
result = _.filter(test, o => o.ab.enabled)
您可以使用删除:
可以对值为false的属性使用递归检查,并从对象中删除此分支 函数deleteKeyobject{ 对象 .KeyObject .foreach功能键{ 如果对象[key]。已启用===false{ 删除对象[键]; 回来 } 如果对象[键]&&typeof对象[键]==“对象”{ deleteKeyobject[键]; if!Object.keysobject[key].length{ 删除对象[键]; } } }; } var object={name:whiteu主题,source:whiteu主题,page:{layout:{grid:TILES,margin:{enabled:true,left:15,top:15,right:15,bottom:15},background:{filter:{enabled:false,blur:{enabled:false,value:null,unit:px},亮度:{enabled:false,value:100,unit:%},对比度:{enabled:false,value:0,unit:%},灰度:{enabled:false,值:0,单位:%},反转:{enabled:false,值:0,单位:%},不透明度:{enabled:false,值:100,单位:%},饱和:{enabled:false,值:100,单位:%},颜色:{enabled:false,值:rgba232,232,1}}; 删除关键对象; console.logobject;
。作为控制台包装{max height:100%!important;top:0;}这不是唯一的键,对象是动态的,可以包含更多键。我不能使用静态键。请使用筛选函数获取新数组。谢谢,但它不能使用嵌套结构。请看一看。也许您可以添加相关信息要查找的想要/不想要的密钥的级别。请将想要的结果也添加到原始结构中。我的问题实际上是如何确定将以下启用项分配给哪个键。也许你可以为这个问题添加一些用例。你应该检查树中的每个对象,如果它有自己的属性enabled,那么如果false,就删除它。
var atocken = {
a: {
ab: {
propOne: '',
enabled: true
}
},
b: {
ab: {
propOne: '',
enabled: false
}
}
}
if(atocken.b.ab.enabled === false)
{
delete atocken.b;
}