Tengo 2 objetos y quiero agregar un nuevo par de valores clave solo al primer objeto de coincidencia de este tipo.
Obj1 [{ buyDate: "yesterday", productId: "0001", consumerId: "John", price: 10 // add new key value pair here }, { buyDate: "today", productId: "0001", consumerId: "John", price: 10 }, { buyDate: "yesterday", productId: "0002", consumerId: "Doe", price: 7 }] Obj2 { productId: "0001", consumerId: "John", quantity: 4 } En Obj1 , dado que el productId de producto y el ID de consumerId son iguales, quiero agregar un nuevo par de valores clave de Obj2 que tenga el mismo productId de producto y ID de consumerId para el primer 0001 y John .
Me quedé atrapado desde aquí.
let newObj2 = {}; if (Obj1) { Obj1.forEach((e) => { newObj2[e.consumerId] = e; }); } let newData = Obj1.map((e) => { return { ...e, quantity: Obj2[e.consumerId]?.quantity ? Obj2[e.consumerId]?.quantity : 0, }; });¿Alguien podría ayudarme a lograrlo? Agradezco cualquier tipo de respuesta. Gracias antes
editar: dado que es un dato ficticio, escribí algún error
Use Array.find para encontrar el elemento en la matriz que se busca de la siguiente manera:
const obj1 = [ { buyDate: "yesterday", productId: "0001", consumerId: "John", price: 10 }, { buyDate: "today", productId: "0001", consumerId: "John", price: 10 }, { buyDate: "yesterday", productId: "0002", consumerId: "Doe", price: 7 } ]; const obj2 = { productId: "0001", consumerId: "John", quantity: 4 }; let item = obj1.find(function(item) { return item.productId === obj2.productId && item.consumerId === obj2.consumerId }); if (item === undefined) { // not found } else { item.quantity = obj2.quantity; } console.log(obj1);