JSFiddle - React, Tailwind, and code Playground
HTML
<p id="json_clean"></p>
JavaScript
data = [
{
"State": "California",
"Cities": [
{
"City_Name": "Long Beach",
"Museum_Name": "Museum of Latin American Art",
"link": "link"
},
{
"City_Name": "Los Angeles",
"Museum_Name": "Skirball Cultural Center",
"link": "link"
},
{
"City_Name": "Los Angeles",
"Museum_Name": "\nAutry National Center",
"link": "link"
}
]
}
];
var new_data = [];
for (var state_index = 0; state_index < data.length; state_index++) {
var state = data[state_index];
var name = state.State;
var cities = [];
var city_index_map = {};
for (var city_index = 0; city_index < state.Cities.length; city_index++) {
var city = state.Cities[city_index];
var museum = { "Museum_Name" : city.Museum_Name, "link" : city.link }
var city_data = {};
// City doesn't exist, so add it
if (!(city.City_Name in city_index_map)) {
city_index_map[city.City_Name] = city_index;
city_data.City_Name = city.City_Name;
city_data.Museums = [ museum ];
cities.push(city_data);
} else { // City already exists, so append the data
var tmp_city_index = city_index_map[city.City_Name];
cities[tmp_city_index].Museums.push(museum);
}
}
new_data.push( {"State" : name, "Cities" : cities} );
}
var p2 = document.getElementById('json_clean');
p2.innerHTML = JSON.stringify(new_data);
want = [
{
"State": "California",
"Cities": [
{
"City_Name": "Long Beach",
"Museums": [
{
"Museum_Name": "Museum of Latin American Art",
"link": "link"
}
]
},
...