Tengo 2 matrices que contienen objetos, quiero crear una nueva matriz sin "duplicados". El problema es que las dos matrices no son idénticas y quiero elegir según la identificación. Esta es una versión simple de lo que obtuve:
let array1 = [
{
"id": "1",
"type": "abc"
},
{
"id": "2",
"type": "one, two, three"
}
]
let array2 = [
{
"id": "1",
"type": "abc",
"country": "England"
},
{
"id": "3",
"type": "one, two, three",
"country": "Germany"
}
]
let array3 = array1.filter(x => array2.forEach(y => x.id === y.id)).concat(array2);
El resultado que quiero para array3 es:
{
"id": "1",
"type": "abc"
}
En este caso particular, el país no es importante y se descartará de todos modos.
¿Cómo filtro los objetos no deseados y creo una nueva matriz solo con los objetos que quiero?
Solución del problema
Si está buscando una intersección entre las matrices, la respuesta más corta es usar el filtro con un hallazgo.
let array1 = [{
id: '1',
type: 'abc',
},
{
id: '2',
type: 'one, two, three',
},
];
let array2 = [{
id: '1',
type: 'abc',
country: 'England',
},
{
id: '3',
type: 'one, two, three',
country: 'Germany',
},
];
const array3 = array1.filter(value => array2.find((a)=>a.id==value.id));
console.log(array3);
No hay comentarios.:
Publicar un comentario