Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

111
Views
Reaccionar en bucle y crear una nueva matriz con objetos anidados

Tengo una serie de documentos:

 [{ "name": "AAPL", "ownerTotals": {uid: "xxx", totaledAmount: 140 }, {uid: "yyy", totaledAmount: 10} }, { "name": "TSLA", "ownerTotals": {uid: "xxx", totaledAmount: 11 }, {uid: "yyy", totaledAmount: 2} }]

y una serie de propietarios:

 {uid: "xxx"}, {uid: "yyy"}

Estoy tratando de crear un nuevo/(actualizar) el objeto de los propietarios con un objeto anidado que contiene las posiciones que poseen. entonces quiero actualizar los propietarios a este formato:

 [{uid: "xxx", "positions": [{name: "AAPL", totaledAmount: 140 },{name: "TSLA", totaledAmount: 11}] }, {uid: "yyy", "positions": [{name: "AAPL", totaledAmount: 10 },{name: "TSLA", totaledAmount: 2}] }]

¿Cuál es la mejor manera de lograr esto?

Yo estaba tratando de algo a lo largo de las líneas de

 owners.forEach((owner) => { documents.forEach((document) => { document.ownerTotals.forEach((ownerTotal) => { if (ownerTotal.uid === owner.uid) { } } }) } })

No estoy realmente seguro de qué hacer en el corazón de cada ciclo, y ni siquiera estoy seguro de si ForEach es la forma más metódica para esto... Estoy usando reacción moderna con ganchos.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puedes hacer algo como esto:

 const documents = [ { name: "AAPL", ownerTotals: [ { uid: "xxx", totaledAmount: 140 }, { uid: "yyy", totaledAmount: 10 } ] }, { name: "TSLA", ownerTotals: [ { uid: "xxx", totaledAmount: 11 }, { uid: "yyy", totaledAmount: 2 } ] } ]; const owners = [{ uid: "xxx" }, { uid: "yyy" }]; const res = owners.map(({ uid }) => { let ownedDocuments = []; documents.forEach((doc) => { let docFound = doc.ownerTotals.find(({ uid: docUid }) => docUid === uid); if (docFound) { ownedDocuments.push({ name: doc.name, totaledAmount: docFound.totaledAmount }); } }); return { uid, positions: ownedDocuments }; }); console.log(res);

about 4 years ago · Juan Pablo Isaza Report

0

Puede usar reduce para agrupar posiciones por ID de userid .

 const positions = [{ "name": "AAPL", "ownerTotals": {uid: "xxx", totaledAmount: 140 }, {uid: "yyy", totaledAmount: 10} }, { "name": "TSLA", "ownerTotals": {uid: "xxx", totaledAmount: 11 }, {uid: "yyy", totaledAmount: 2} }] const posByUid = positions.reduce((acc, current) => { const name = current.name current.positions.forEach(position => { if (!acc[position.uid]) { acc[position.uid] = [] } acc[position.uid] = {name, totaledAmount: position.totaledAmount} }) return acc }, {})
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!