I have the following JSON object:
{
"name": "Womens",
"position": 1,
"url": "/collections/womens-all",
"submenus": [
{
"name": "Apparel",
"position": 1,
"url": "/collections/womens-apparel-all",
"submenus": [
{
"name": "Tees & Tanks",
"position": 1,
"url": "/collections/womens-tees",
"submenus": []
},
{
"name": "Silk & Tops",
"position": 2,
"url": "/collections/womens-tops",
"submenus": []
},
{
"name": "Sweaters & Sweatshirts",
"position": 3,
"url": "/collections/womens-sweaters",
"submenus": []
}
]
},
{
"name": "Accessories",
"position": 2,
"url": "/collections/womens-all-accessories",
"submenus": [
{
"name": "Petra",
"position": 1,
"url": "/collections/petra",
"submenus": []
},
{
"name": "Weekenders",
"position": 2,
"url": "/collections/womens-bags",
"submenus": []
},
{
"name": "Backpacks & Totes",
"position": 3,
"url": "/collections/womens-backpacks",
"submenus": []
},
{
"name": "Accessories & Shoes",
"position": 4,
"url": "/collections/womens-accessories",
"submenus": []
}
]
}
]
}
I want to flatten this object's submenus into a single array containing every menu in the tree. The result would look like:
[
{
"name": "Apparel",
"position": 1,
"url": "/collections/womens-apparel-all",
"submenus": []
},
{
"name": "Accessories",
"position": 2,
"url": "/collections/womens-all-accessories",
"submenus": []
},
{
"name": "Petra",
"position": 1,
"url": "/collections/petra",
"submenus": []
},
{
"name": "Weekenders",
"position": 2,
"url": "/collections/womens-bags",
"submenus": []
},
{
"name": "Backpacks & Totes",
"position": 3,
"url": "/collections/womens-backpacks",
"submenus": []
},
{
"name": "Accessories & Shoes",
"position": 4,
"url": "/collections/womens-accessories",
"submenus": []
},
{
"name": "Tees & Tanks",
"position": 1,
"url": "/collections/womens-tees",
"submenus": []
},
{
"name": "Silk & Tops",
"position": 2,
"url": "/collections/womens-tops",
"submenus": []
},
{
"name": "Sweaters & Sweatshirts",
"position": 3,
"url": "/collections/womens-sweaters",
"submenus": []
}
]
I feel like a recursive solution would be best, but I can't get it right. What would be the best approach for this problem?