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

179
Views
Cómo filtrar una matriz basada en un valor de campo en cada objeto y agrupar los campos restantes debajo de ese objeto

Estoy tratando de modificar una matriz. Tengo el siguiente json.

 [ { state: "NY", key: "A", value: "Alarm" }, { state: "CT", key: "A", value: "Alarm" }, { state: "NH", key: "A", value: "Alarm" }, { state: "CT", key: "B", value: "Audible and Etched" }, { state: "NH", key: "B", value: "Audible and Etched" }, { state: "NY", key: "AA", value: "Active Disabling and Anti-Theft" }, { state: "FL", key: "B", value: "Audible and Etched" }, { state: "FL", key: "A", value: "Alarm" }, { state: "FL", key: "AA", value: "Active Disabling and Anti-Theft" } ]

Según cada estado único, necesito agrupar la clave, los valores en una matriz desplegable como se muestra a continuación

 [{ state: "NY", dropdown: [ { key: "A", value: "Alarm" }, { key: "AA", value: "Active Disabling and Anti-Theft" } ] }, { state: "CT", dropdown: [ { key: "A", value: "Alarm" }, { key: "B", value: "Audible and Etched" } ] }, { state: "NH", dropdown: [ { key: "A", value: "Alarm" }, { key: "B", value: "Audible and Etched" } ] }, { state: "FL", dropdown: [ { key: "A", value: "Alarm" }, { key: "B", value: "Audible and Etched" }, { key: "AA", value: "Active Disabling and Anti-Theft" } ] }]

Cualquier ayuda sería apreciada. Gracias.

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

0

Puede usar Array.reduce para obtener la matriz modificada.

 const inputArray = [ { state: "NY", key: "A", value: "Alarm" }, { state: "CT", key: "A", value: "Alarm" }, { state: "NH", key: "A", value: "Alarm" }, { state: "CT", key: "B", value: "Audible and Etched" }, { state: "NH", key: "B", value: "Audible and Etched" }, { state: "NY", key: "AA", value: "Active Disabling and Anti-Theft" }, { state: "FL", key: "B", value: "Audible and Etched" }, { state: "FL", key: "A", value: "Alarm" }, { state: "FL", key: "AA", value: "Active Disabling and Anti-Theft" } ]; const result = inputArray.reduce((acc, item) => { const exist = acc.find(e => e.state == item.state); if (exist) { exist.dropdown.push({ key: item.key, value: item.value }) } else { acc.push({ state: item.state, dropdown: [{ key: item.key, value: item.value }] }); } return acc; }, []); console.log(result);

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!