javascript从另一个对象数组中不存在的对象数组中删除元素
我有两个不同对象的数组,但我需要某种映射函数将这两个数组映射到新数组。newArray具有相同的对象类型arr1javascript从另一个对象数组中不存在的对象数组中删除元素,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
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"}]