GOOGLE ADS

lunes, 2 de mayo de 2022

Crear una nueva matriz y eliminar objetos no deseados de matrices antiguas javascipt

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

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...