Wanted to make a generic cascading dropdown but am weak in recursion
The code is supposed to end up with
- One select for items - clothes or gadgets - when a choice is made
- One select with either Levis/Gucci or LG/Apple - when a choice is made
 
- One select with either Levis jeans or jackets or Gucci shoes or dresses - when a choice is made
 
 
- One select with Levis jeans sizes OR levis jacket sizes OR
 
 
 
- One select with Gucci shoe sizes OR Gucci dress sizes
 
 
 
OR
- One select with either LG TVs or phones or Apple Macbooks or iPhones - when a choice is made
 
 
- One select with LG TV sizes OR LG Phone sizes OR
 
 
 
- One select with Apple Macbook sizes OR Apple iPhone sizes
 
 
 
I lost my train of thoughts when I got to actually recurse - or perhaps filtering can be used?
I assume one could make a set of paths and then just show/hide depending on path
const selObject = {
  "-- Select Item --": {
    "Clothes": {
      "-- Select brands --": {
        "Levis": {
          "-- Select product --": {
            "Jeans": {
              "-- Select size --": [
                "38",
                "39",
                "40"
              ]
            },
            "Jackets": {
              "-- Select size --": [
                "41",
                "42",
                "43"
              ]
            }
          }
        }, // end Levis
        "Gucci": {
          "-- Select product --": {
            "Shoes": {
              "-- Select size --": [
                "45",
                "50",
                "55"
              ]
            },
            "Dresses": {
              "-- Select size --": [
                "8",
                "9",
                "10"
              ]
            }
          }
        } // end Gucci
      } // end brands  
    }, // End clothes
    "Gadgets": {
      "-- Select brands --": {
        "LG": {
          "-- Select product --": {
            "TVs": {
              "-- Select size --": [
                "38",
                "39",
                "40"
              ]
            },
            "Phones": {
              "-- Select size --": [
                "8",
                "9",
                "10"
              ]
            }
          }
        }, // end Levis
        "Apple": {
          "-- Select product --": {
            "Macbooks": {
              "-- Select size --": [
                "15",
                "17",
                "21"
              ]
            },
            "iPhones": {
              "-- Select size --": [
                "8",
                "9",
                "10"
              ]
            }
          }
        } // end Apple
      } // end brands
    } // end  Gadgets
  } // end items
} // end  
function createSel(obj) {
  Object.keys(obj).forEach(function(item) {
    if (typeof obj[item] == "object") {
      var list = obj[item];
      //console.log(item,typeof list);
      if (typeof list == "object") {
        if (list.length) {
          list.forEach(function(val) {
            console.log('<br/>'+val)
          })  
        }  
        else createSel(list)
      }
    } else {
      console.log("no", obj[item])
    }
  });
}
window.onload = function() {
  createSel(selObject)
}<form name="myform" id="myForm">
  <div id="selContainer">
  </div>
</form> 
     
    