Estoy luchando por encontrar una solución a mi problema, pero en este momento no puedo encontrar la correcta.
Cuando tengo mis dos conjuntos de objetos, quiero filtrar según los ID de categoría y extraer los datos del segundo en un nuevo conjunto, por ejemplo:
const array1 = [ {id: 1, name: 'Tropical'}, {id: 2, name: 'Common'} ] const array2 = [ {id:1, name: 'Banana', category_id: 1}, {id:2, name: 'Mango', category_id: 1}, {id:3, name: 'Apple', category_id: 2}, ]Y cuando ocurre el clic, detecto la primera ID y represento la nueva matriz solo con datos que coincidan con la ID. Haga clic en Tropical Nueva matriz:
[ {id:1, name: 'Banana', category_id: 1}, {id:2, name: 'Mango', category_id: 1}, ]Sería feliz si alguien me da una pista sobre cómo puedo abordar este problema. Gracias !
Use reduce para mapear sobre cada elemento en array1 y filtre para capturar los elementos de ese category_id
const array1 = [{ id: 1, name: 'Tropical' }, { id: 2, name: 'Common' } ] const array2 = [{ id: 1, name: 'Banana', category_id: 1 }, { id: 2, name: 'Mango', category_id: 1 }, { id: 3, name: 'Apple', category_id: 2 }, ] const obj = array1.reduce((acc, cur) => { acc[cur.name] = array2.filter(v => v.category_id === cur.id) return acc }, {}) console.log(obj)Podría hacer algo como filtrar array2 y tomar todos los elementos que tienen Tropical como name en array1 .
const array1 = [ {id: 1, name: 'Tropical'}, {id: 2, name: 'Common'} ] const array2 = [ {id:1, name: 'Banana', category_id: 1}, {id:2, name: 'Mango', category_id: 1}, {id:3, name: 'Apple', category_id: 2}, ] // take tropical friuts let tropicalFriuts = array2.filter(x => x.category_id === array1.filter(y => y.name === 'Tropical')[0].id); console.log(tropicalFriuts);Si entendí su problema, antes de encontrar la identificación, en función del nombre de la categoría, y luego filtrar los datos de array2 en función de esta identificación.
const array1 = [{ id: 1, name: 'Tropical' }, { id: 2, name: 'Common' } ] const array2 = [{ id: 1, name: 'Banana', category_id: 1 }, { id: 2, name: 'Mango', category_id: 1 }, { id: 3, name: 'Apple', category_id: 2 }, ] const id_key = array1.find(item=>item.name === 'Tropical').id; const result = array2.filter(item=>item.category_id === id_key); console.log(result);