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

javascript从另一个对象数组中不存在的对象数组中删除元素

javascript从另一个对象数组中不存在的对象数组中删除元素,javascript,Javascript,我有两个不同对象的数组,但我需要某种映射函数将这两个数组映射到新数组。newArray具有相同的对象类型arr1 let arr = [{Id: 1, Name:'test'}, {Id: 2, Name:'test2'}] let secondarr = [{value:'test'}, {value:'test3'}] const newArray = [{Id: 1, Name: 'test'}, {Id: null, value: 'test3'}]; arr.forEach(elem

我有两个不同对象的数组,但我需要某种映射函数将这两个数组映射到新数组。newArray具有相同的对象类型arr1

let arr = [{Id: 1, Name:'test'}, {Id: 2, Name:'test2'}]
let secondarr = [{value:'test'}, {value:'test3'}]
const newArray = [{Id: 1, Name: 'test'}, {Id: null, value: 'test3'}];

arr.forEach(element => {
  let exists = false;
  secondarr.forEach(i => {
    if(i.value === element.Name) {
      exists = true;
    }
  });
  if(exists) {
    secondarr = secondarr.filter(l => l.value !== element.Name);
  }
  if(!exists) {
    arr = arr.filter(l => l.Name !== element.Name);
  }
});

secondarr.forEach(element => {
  const newObj = {Id: null, Name: element.value};
  arr.push(newObj);
});
您可以使用遍历arr2并使用获取匹配元素

输出

[{"Id":1,"Name":"test"},{"Id":null,"Name":"test3"}]

你试过了吗?有什么问题吗?如果你看不到聪明的方法,那就从一个明显的方法开始,那就是在你想要增加的对象上循环,然后按照你的规范一个一个地增加它们。为什么你在newArray中没有{Id:2,Name:'test2'}?如果arr1和arr2之间存在重复呢?在本例中,您希望在newArray中看到什么?标题和描述不匹配。在标题中,您要求删除。最明显的是简单的简单解决方案。总是从他们开始。您以后将有所有时间来改进它们。@J.D下次通过测试、尝试、MCVE等为您的问题添加更多信息。。这个答案是第一步,应该让你继续。您希望处理重复和更多。另外,花点时间检查map和find的文档。
[{"Id":1,"Name":"test"},{"Id":null,"Name":"test3"}]