Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 - Fatal编程技术网

Javascript 基于对象的属性删除数组的对象

Javascript 基于对象的属性删除数组的对象,javascript,arrays,Javascript,Arrays,我有一个这样的数组:var obj=[{x:4,y:5},{x:6,y:2},…],我正试图基于x删除一个内部对象(属性) 这就是我试图做到的: obj.forEach(function (child){ if(child.x === 4){ obj.destroy(child) } }); 但它不起作用,我得到 破坏不是一种功能 我还尝试了obj.splice(child),但它只是把数组弄乱了。那么我做错了什么? 还有一种更好的方法可以做到这一点,那就是不必

我有一个这样的数组:
var obj=[{x:4,y:5},{x:6,y:2},…]
,我正试图基于x删除一个内部对象(属性)

这就是我试图做到的:

 obj.forEach(function (child){
    if(child.x === 4){
      obj.destroy(child)
    }
 });
但它不起作用,我得到

破坏不是一种功能

我还尝试了
obj.splice(child)
,但它只是把数组弄乱了。那么我做错了什么?
还有一种更好的方法可以做到这一点,那就是不必每次都循环遍历所有数组属性?

您可能拥有一个数组作为
obj
,因为您在问题中发布的数组是无效语法

此外,您可以使用
Array#findIndex
首先获取匹配元素的索引,然后从数组中获取该索引

varobj=[{x:4,y:5},{x:6,y:2}];
var索引=对象findIndex(项目=>项目x==4);
目标拼接(索引1);

控制台日志(obj)
您可能拥有一个数组作为
obj
,因为您在问题中发布的数组只是无效语法

此外,您可以使用
Array#findIndex
首先获取匹配元素的索引,然后从数组中获取该索引

varobj=[{x:4,y:5},{x:6,y:2}];
var索引=对象findIndex(项目=>项目x==4);
目标拼接(索引1);
控制台日志(obj)
forEach()
在数组上工作

如果
obj
是一个数组,只需使用
filter()
即可从数组中删除不需要的对象:

var obj=[{x:4,y:5},{x:6,y:2}]
obj=obj.filter(c=>c.x!==4)
控制台日志(obj)
forEach()
在数组上工作

如果
obj
是一个数组,只需使用
filter()
即可从数组中删除不需要的对象:

var obj=[{x:4,y:5},{x:6,y:2}]
obj=obj.filter(c=>c.x!==4)

控制台日志(obj)您可以在阵列上使用过滤器:例如

let arrayToFilter=[{x:4,y:5},{x:6,y:2}];
常量值过滤器=4;
var filteredArray=arrayToFilter.filter((o)=>{
返回o.x!==过滤器的值;
});

控制台日志(filteredArray)您可以在阵列上使用过滤器:例如

let arrayToFilter=[{x:4,y:5},{x:6,y:2}];
常量值过滤器=4;
var filteredArray=arrayToFilter.filter((o)=>{
返回o.x!==过滤器的值;
});

控制台日志(filteredArray)
我假设您试图筛选出数组中具有与给定值匹配的
x
的对象。如果是这种情况,您可能应该使用
filter
方法

假设这就是你的意思,你可以做下面的事情

obj = obj.filter(function (child){
if(child.x !== 4){
  return obj
}
});
// shorter
obj = obj.filter( child => child.x !== 4 );

在这种情况下,
obj
变量中只有值不为4的对象可用。所有其他对象(假设代码中没有其他引用)都将被垃圾收集

我假设您试图筛选出数组中具有与给定值匹配的
x
的对象。如果是这种情况,您可能应该使用
filter
方法

假设这就是你的意思,你可以做下面的事情

obj = obj.filter(function (child){
if(child.x !== 4){
  return obj
}
});
// shorter
obj = obj.filter( child => child.x !== 4 );

在这种情况下,
obj
变量中只有值不为4的对象可用。所有其他对象(假设代码中没有其他引用)都将被垃圾收集

您的原始对象无效。你真的试过用JavaScript创建它吗?JavaScript对象有键,你的没有。你的意思是“根据属性从对象数组中删除对象”吗?原始对象的可能副本无效。你真的试过用JavaScript创建它吗?JavaScript对象有键,而你的没有。你的意思是“根据属性从对象数组中删除对象”吗?可能是重复的