si dos objetos en la matriz de datos contienen la misma identificación, se seleccionará el primero y se descartarán los otros. múltiples activos de la misma identificación deben estar en un objeto.
const myMap = cardDetails.map((card) => { return { id: card.id, amount: Number(card.amount), quantity: card.quantity, images: card.file, }; }); const data = { id: user?.userid, data: myMap, }; Mi objetivo con estos datos es fusionar las matrices ( myMap ) que contienen la misma identificación en un solo objeto. ¿Cómo se puede lograr esto?
no está claro lo que quiere decir con múltiples activos
Supongo que quieres que alguna clave se fusione.
Puede lograrlo fácilmente usando reduce y Object.values
como esto
const myData = Object.values(cardDetails.reduce((res, {id,...card}) => { const existing = res[id] || {} return { ...res, [id]: { id, ...existing, ...card //here you need to change accordingly with your merge logic } } }, {})); const groupData = (arr) => { const result = arr.reduce((acc, val) => { const existing = acc.find((obj) => obj.id == val.id) if (existing) { existing.data.push(val) } else { acc.push({ id: val.id, data: [val] }) } return acc }, []) return result; } const arr = [ {id: 3, amount: 300, quantity: 77, images: ''}, {id: 3, amount: 400, quantity: 83, images: ''}, {id: 4, amount: 900, quantity: 48, images: ''} ] console.log(groupData(arr))