JSFiddle - React, Tailwind, and code Playground

Traverse array and set child pages.

by Nalin Sajwan

JavaScript

let dataArr = [
  {
    "name": "Section",
    "children": [
      {
        "name": "Report",
        "icon": "fa-table",
        "children": [
          {
            "name": "Positions"
          },
          {
            "name": "Exposure"
          },
          {
            "name": "Securities"
          },
          // {
          //   "name": "Samples"
          // }
        ]
      },
      {
        "name": "Securities"
      }
    ]
  }
];

function getChildPages(obj) {

	if(obj.children) {
  
  	let pages = [];
  
  	obj.children.forEach((el) => {
      let pagesArr = getChildPages(el);
      pages = pages.concat(pagesArr);
    });
    
    return pages;
  } else {
  	return `/app/page/${obj.name}`;
  }
}

function setPaths(data) {

  for (let i = 0; i < data.length; i++) {

    let obj = data[i];
    
    if (obj.children instanceof Array && obj.children.length > 0) {
    	obj.paths = getChildPages(obj);
      setPaths(obj.children);
    }
  };
};

setPaths(dataArr);

console.log("dataArr ==> ", dataArr);