简体   繁体   中英

Display nested loops object in html list ul li

Hi I have this object

{
 levela: {
  levelb: {
    levelc: [],
    leveld: []
  }
 }, 
 level1: {
   level2: {
     level3: {
       level4:[]
     }
   }
 }
}

I want convert this in ul li items like this, I just want to stop if I object[key] is an array

<ul>
 <li>levela
  <ul>
   <li>levelb
      <ul>
         <li>levelc</li>
      </ul>
   </li>

  </ul>
 </li>
 <li>level1</li>
  ....
</ul>

Thanks

Time to use generator function !

Hope you don't render that component often...

 const { useState, useEffect } = React; const App = () => { const [data, setData] = useState({ levela: { levelb: { levelc: [], leveld: [] } }, level1: { level2: { level3: { level4: [] } } } }) const renderData = (data) => { let id = 1; function* renderRecurse(data) { if (Array.isArray(data)) { for (let item of data) { yield (<li key={id++}>{item}</li>) } return; } for (let [key, value] of Object.entries(data)) { yield (<ul key={id++}><li key={id++}>{key}</li>{[...renderRecurse(value)]}</ul>) } } return [...renderRecurse(data)] } return <div>{renderData(data)}</div> } ReactDOM.render(<App />, document.getElementById('root') );
 <script src="https://unpkg.com/react/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom/umd/react-dom.development.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.10.1/polyfill.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <div id="root"></div>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM