Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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 根据动态属性名称的值从数组中删除对象_Javascript_Arrays_Object_Multidimensional Array - Fatal编程技术网

Javascript 根据动态属性名称的值从数组中删除对象

Javascript 根据动态属性名称的值从数组中删除对象,javascript,arrays,object,multidimensional-array,Javascript,Arrays,Object,Multidimensional Array,我有以下需要根据值筛选的对象数组,但问题是属性名是动态的 const data = [ {id: 112, cat: 0, dog: 0}, {id: 114, cat: 0, dog: 1}, {id: 115, tiger: 5, dog: 0}, {id: 116, tiger: 0, lion: 3}, {id: 117, tiger: 0, lion: 0} ]; 我期望的输出应如下所示: const output = [ {id: 114, cat: 0,

我有以下需要根据值筛选的对象数组,但问题是属性名是动态的

const data = [
  {id: 112, cat: 0, dog: 0},
  {id: 114, cat: 0, dog: 1},
  {id: 115, tiger: 5, dog: 0},
  {id: 116, tiger: 0, lion: 3},
  {id: 117, tiger: 0, lion: 0}
];
我期望的输出应如下所示:

const output = [
   {id: 114, cat: 0, dog: 1},
   {id: 115, tiger: 5, dog: 0},
   {id: 116, tiger: 0, lion: 3}
];

这里的情况是,id是一个常量属性。但是其他两个属性名称发生了变化。如果对象中两个属性(不包括id)的值均为0,则应删除该对象。

您可以使用筛选器和

常数数据=[ {id:112,cat:0,dog:0}, {id:114,猫:0,狗:1}, {id:115,老虎:5,狗:0}, {id:116,老虎:0,狮子:3}, {id:117,老虎:0,狮子:0} ]; //对象中名为id或具有0值的每个键/值对都将被过滤掉 const result=data.filterd=> !Object.entried .every[key,value]=>key='id'| | value==0 ;
console.logresult 您可以使用过滤器和

常数数据=[ {id:112,cat:0,dog:0}, {id:114,猫:0,狗:1}, {id:115,老虎:5,狗:0}, {id:116,老虎:0,狮子:3}, {id:117,老虎:0,狮子:0} ]; //对象中名为id或具有0值的每个键/值对都将被过滤掉 const result=data.filterd=> !Object.entried .every[key,value]=>key='id'| | value==0 ;
console.logresult 您可以分解不需要的属性,并从其余属性中获取值,然后检查是否存在某些值

常数 data=[{id:112,cat:0,dog:0},{id:114,cat:0,dog:1},{id:115,tiger:5,dog:0},{id:116,tiger:0,lion:3},{id:117,tiger:0,lion:0}], 结果=data.filter{id,…o}=>Object.valueso.someBoolean; console.logresult;
.as console wrapper{max height:100%!important;top:0;}您可以分解不需要的属性,并从其余属性中获取值,并检查是否存在某些值

常数 data=[{id:112,cat:0,dog:0},{id:114,cat:0,dog:1},{id:115,tiger:5,dog:0},{id:116,tiger:0,lion:3},{id:117,tiger:0,lion:0}], 结果=data.filter{id,…o}=>Object.valueso.someBoolean; console.logresult;
.作为控制台包装{最大高度:100%!重要;顶部:0;}谢谢您的解释先生,完美索尔:谢谢您的解释先生,完美索尔:非常感谢您的回答。它在我的代码中运行良好。但是你能解释一下每一个[key,value]=>key='id'| | value==0这个代码是做什么的吗?如果id属性以外的两个值都为0,则结果应该是需要过滤掉。但为什么会是| |?使用或的目的是什么?为什么是==而不是==???抱歉,我知道我听起来很傻,哈哈。但我只是无法理解整个画面。没问题,我会尝试解释,但这是一个逻辑问题:所以我们要检查当前对象中的每个键/值对是否都有名称id或值0。因为如果其中一个对对象中的每个键/值对都为true,那么我们可以确保每个值都为0,并且忽略id属性。现在我们可以找到每一个看起来像这样的物体,但我们想要的正好相反,这就是为什么我放了一个!在.each函数之前-对整个语句求反,并得到所有看起来不像那样的对象。希望我的解释不是太糟糕lol@DeepikaDeepi如果你不明白或者需要更多的信息,请再次评论,我会尽力回答。非常感谢你的回答。它在我的代码中运行良好。但是你能解释一下每一个[key,value]=>key='id'| | value==0这个代码是做什么的吗?如果id属性以外的两个值都为0,则结果应该是需要过滤掉。但为什么会是| |?使用或的目的是什么?为什么是==而不是==???抱歉,我知道我听起来很傻,哈哈。但我只是无法理解整个画面。没问题,我会尝试解释,但这是一个逻辑问题:所以我们要检查当前对象中的每个键/值对是否都有名称id或值0。因为如果其中一个对对象中的每个键/值对都为true,那么我们可以确保每个值都为0,并且忽略id属性。现在我们可以找到每一个看起来像这样的物体,但我们想要的正好相反,这就是为什么我放了一个!在.each函数之前-对整个语句求反,并得到所有看起来不像那样的对象。希望我的解释不是太糟糕lol@DeepikaDeepi如果你不明白或者需要更多的信息,只需再次评论,我会尝试回答