Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS在对象上迭代并删除启用的false_Javascript - Fatal编程技术网

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;
    }