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

192
Views
¿Cómo puedo crear una lista desordenada en reacción basada en una matriz de objetos?

Tengo una matriz de objetos cuyo esquema es algo como esto.

 [ { text: 'Contents', level: 2 }, { text: 'h2 Heading', level: 2 }, { text: 'h3 Heading', level: 3 }, { text: 'h4 Heading', level: 4 }, { text: 'Heading', level: 2 }, ]

Quiero crear una lista desordenada basada en los niveles de cada objeto. Entonces, por ej. la matriz anterior debe mostrarse como:

 <ul> <li>Contents</li> <li> h2 Heading <ul> <li> h3 Heading <ul> <li>h4 Heading</li> </ul> </li> </ul> </li> <li>Heading</li> </ul>

Puedo comprobar si el siguiente objeto tiene el mismo nivel que el anterior. Y maneje las consultas en consecuencia, pero ¿hay una solución mejor? O cualquier solución que funcione correctamente.

Edición n. ° 1: Justo ahora, encontré una solución que se solicitó aquí hace unos 13 años. Puedo diseñar los elementos dándole una percepción de una lista anidada. Enlace: Producir jerarquía de encabezados como lista ordenada

Aún así, si hay una solución mejor, responda.

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

0

Esta es una posible solución. Puede consultar este enlace para obtener un editor de código en línea reactivo.

 const objects = [ { text: "Contents", level: 2 }, { text: "h2 Heading", level: 2 }, { text: "h3 Heading", level: 3 }, { text: "h4 Heading", level: 4 }, { text: "Heading", level: 2 } ]; const getDisplayableObjects = () => { const arr = []; let targetArr; for (const obj of objects) { const { text, level } = obj; switch (level) { case 2: arr.push({ text, children: [] }); break; case 3: targetArr = arr[arr.length - 1].children; targetArr.push({ text, children: [] }); break; case 4: targetArr = arr[arr.length - 1].children; targetArr = targetArr[targetArr.length - 1].children; targetArr.push({ text, children: [] }); break; default: break; } } return arr; }; const App = () => { return ( <> {getDisplayableObjects().map(({ text, children }) => ( <ul> <li> {text} {children.map(({ text, children }) => ( <ul> <li>{text}</li> {children.map(({ text, children }) => ( <ul> <li>{text}</li> </ul> ))} </ul> ))} </li> </ul> ))} </> ); }; export default App;

Resultado:

ingrese la descripción de la imagen aquí

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!