Tengo 2 matrices de objetos con la misma estructura, cada uno de ellos proviene de una consulta de la base de datos. ¿Cómo puedo mapear la sección transversal en una nueva matriz comparando el valor de ID ?
tempArray=[{city:london,subject:"testdata", id:7777}, {city:london,subject:"testdata", id:5555}] tempArray1=[{city:london,subject:"testdata", id:8888}, {city:london,subject:"testdata", id:5555}]Estoy tratando de obtener el resultado:
newArray=[{city:london,subject:"testdata", id:5555}]Este es mi intento, pero fracasé miserablemente:
let newArray=tempArray.map((x)=>{ if (x.id== tempArray1.forEach((doc)=>{ return doc.id})) {return x } })Puedes usar como a continuación:
const filteredArray = tempArray.filter(obj1 => tempArray1.some(obj2 => obj1.id === obj2.id));Primero :
Si london es un valor de cadena, colóquelo entre comillas .
Segundo :
En lugar de usar forEach , debe usar el filter y some métodos como los siguientes:
let newArray = tempArray.filter(x => tempArray1.some(doc => doc.id == x.id)); console.log(newArray) El método some comprueba si algún elemento de la matriz pasa una prueba (proporcionado como una función).
El método de filter crea una nueva matriz llena de elementos que pasan una prueba proporcionada por una función.