Tengo dos matrices y quiero enviar los valores de la segunda matriz que tiene el mismo valor de propiedad. Comparando los valores usando la propiedad addrSeq e insertando el objeto coincidente en la matriz vpainfo
A continuación se muestra la estructura JSON de muestra,
Matriz1 :
[ { "addrSeq": "12", "accountMask": "********7479", "vpainfo": [] }, { "addrSeq": "13", "accountMask": "********74", "vpainfo": [] } ]Matriz2:
[ { "addrSeq": "12", "vpa": "saasasa@fff" }, { "addrSeq": "12", "vpa": "xyz@com" }, { "addrSeq": "13", "vpa": "saas@ddd" } ]solo necesita aprender javascript, aquí está el resultado, mire esto, solo almaceno ambos en una matriz, y luego ejecute el bucle y haga coincidir y empuje en uno.
let firstarray =[ { "addrSeq": "12", "accountMask": "********7479", "vpainfo": [] }, { "addrSeq": "13", "accountMask": "********74", "vpainfo": [] } ] let secondarray = [ { "addrSeq": "12", "vpa": "saasasa@fff" }, { "addrSeq": "12", "vpa": "xyz@com" }, { "addrSeq": "13", "vpa": "saas@ddd" } ] // merge both array into one using addrSeq match value let mergedarray = firstarray.map(function(item) { secondarray.map(function(item2) { if (item.addrSeq == item2.addrSeq) { item.vpainfo.push(item2); } }); return item; }); console.log(mergedarray);Puede lograrlo a través de un bucle forEach simple.
demostración:
const array1 = [ { "addrSeq": "12", "accountMask": "********7479", "vpainfo": [] }, { "addrSeq": "13", "accountMask": "********74", "vpainfo": [] } ]; const array2 = [ { "addrSeq": "12", "vpa": "saasasa@fff" }, { "addrSeq": "12", "vpa": "xyz@com" }, { "addrSeq": "13", "vpa": "saas@ddd" } ]; array2.forEach((obj) => { array1.forEach((array1Obj) => { if (obj.addrSeq === array1Obj.addrSeq) { array1Obj.vpainfo.push(obj.vpa) } }); }); console.log(array1);Suponiendo que el OP requiere que Array1 se actualice de modo que la matriz vpaIinfo de cada objeto se actualice en función de los datos en Array2 , la siguiente solución puede ser una forma posible de lograr el objetivo deseado.
Fragmento de código
const getUpdatedArr = (ar1, ar2) => ( ar1.map( obj => ({ ...obj, vpainfo: [ ...obj.vpainfo, ...ar2.filter( ({addrSeq}) => (obj.addrSeq === addrSeq) ).map( ({vpa}) => vpa ) ] }) ) ); const arr1 = [ { "addrSeq": "12", "accountMask": "********7479", "vpainfo": [] }, { "addrSeq": "13", "accountMask": "********74", "vpainfo": [] } ]; const arr2 = [ { "addrSeq": "12", "vpa": "saasasa@fff" }, { "addrSeq": "12", "vpa": "xyz@com" }, { "addrSeq": "13", "vpa": "saas@ddd" } ]; console.log(getUpdatedArr(arr1, arr2));Explicación
.map()vpainfovpainfo actual (usando ...obj.vpainfo )vpa relevante que se encuentre en array-2.filter() para retener solo aquellos con el mismo addrSeq -Y- luego, usando .map() para extraer solo el vpa prop (usando la desestructuración)