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

117
Views
¿Cómo buscar un valor en un objeto anidado y recuperar un valor principal?

Tengo una matriz de objetos anidados, uno de los cuales tiene este aspecto (he condensado el objeto completo porque sería demasiado grande, jsonArr[0].data es donde estarán los objetos):

 var jsonArr = { "data": [{ "id": 5201, "name": "Simple Engineering", "contracts": [{ "id": 461, "contract_type_id": 99, "contract_status_id": null, "pivot": { "entity_id": 5201, "contract_id": 461 }, "projects": [{ "id": 2785, "name": "Something Hydro", "pivot": { "contract_id": 461, "project_id": 2785 } }] }] }] }

Tengo otra matriz de valores:

 var ids = [461,452,478,655]

Estoy tratando de encontrar una manera de hacer coincidir los valores en ids con los valores en data.contracts.id . Si un valor coincide, quiero recuperar data.name y projects.id .

Entonces, en este caso, el resultado sería una matriz como la siguiente con solo 461 coincidencias:

 var names = ["Simple Engineering",2785]

Espero que esto tenga sentido. Como estoy trabajando con una matriz de varios objetos como el de arriba, necesito una forma de iterar sobre cada valor de ids y cada objeto de la matriz. Gracias, agradezco cualquier ayuda.

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

0

 var jsonArr = { "data": [{ "id": 5201, "name": "Simple Engineering", "contracts": [{ "id": 461, "contract_type_id": 99, "contract_status_id": null, "pivot": { "entity_id": 5201, "contract_id": 461 }, "projects": [{ "id": 2785, "name": "Something Hydro", "pivot": { "contract_id": 461, "project_id": 2785 } }] }] }] } var ids = [461,452,478,655] var names=[] var matched = jsonArr.data?.map(d=>d?.contracts?.map(con=>con?.projects?.map(proj=>{ if(proj?.pivot?.contract_id===ids.find(id=>id===proj?.pivot?.contract_id)) { names.push(d?.name) names.push(proj?.pivot?.project_id) } }))) console.log(names)

 var names=[] var matched = jsonArr.map(jArr=>jArr?.data?.map(d=>d?.contracts?.map(con=>con?.projects?.map(proj=>{ if(proj?.pivot?.contract_id===ids.find(id=>id===proj?.pivot?.contract_id)) { names.push(d?.name) names.push(proj?.pivot?.project_id) } })))) console.log(names)
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!