Javascript 从数组中仅删除同一对象的一个

Javascript 从数组中仅删除同一对象的一个,javascript,Javascript,此代码删除所有“id:2”对象。像这样做: var array = [{id :1, name :"test1"},{id :2, name :"test2"},{id :2, name :"test2"},{id :3, name :"test3"},{id :4, name :"test4"}]; var anotherOne = [{id :2, name :"test2"}, {id :4, name :"test4"}]; var filteredArray = array.fi

此代码删除所有“id:2”对象。像这样做:

var array = [{id :1, name :"test1"},{id :2, name :"test2"},{id :2, name :"test2"},{id :3, name :"test3"},{id :4, name :"test4"}];

var anotherOne = [{id :2, name :"test2"}, {id :4, name :"test4"}];

var filteredArray  = array.filter(function(array_el){
   return anotherOne.filter(function(anotherOne_el){
      return anotherOne_el.id == array_el.id;
   }).length == 0
});
但我只想删除同一对象中的一个。像这样:

{id :1, name :"test1"},{id :3, name :"test3"}

但是,如果数组中的另一个有两个相同的对象,则需要删除两个对象。

您可以尝试以下操作:我正在使用
reduce
findIndex
解决此问题

var数组=[{id:1,名称:“test1”},{id:2,名称:“test2”},{id:2,名称:“test2”},{id:3,名称:“test3”},{id:4,名称:“test4”}];
var-anotherOne=[{id:2,名称:“test2”},{id:4,名称:“test4”}];
const res=数组。reduce((a,c)=>{
const index=anotherOne.findIndex(item=>item.id==c.id);
如果(索引>-1){
/**
*从'anotherOne'数组中删除匹配的一个,
*这样你就不必第二次匹配了。
*因此,它会删除一次匹配项。
*/
另一个。拼接(索引1);
}否则{
a、 推(c);
}
返回a;
}, []);
控制台日志(res)

。作为控制台包装器{min height:100%!important;top:0;}
也可以共享您想要的结果。。为了更好地理解
另一个数组的规则是什么?我想从第一个数组中减去第二个数组。
{id :1, name :"test1"},{id :2, name :"test2"},{id :3, name :"test3"}