How to group a javascript object array by multiple of its properties? How to group a javascript object array by multiple of its properties? json json

How to group a javascript object array by multiple of its properties?


I'd propose this transformation:

var showtimesData = [        {"location":"location1", "date":"31-12-2016", "time":"1:00"},        {"location":"location1", "date":"31-12-2016", "time":"2:00"},        {"location":"location1", "date":"01-01-2017", "time":"3:00"},        {"location":"location1", "date":"01-01-2017", "time":"4:00"},        {"location":"location2", "date":"31-12-2016", "time":"1:00"},        {"location":"location2", "date":"31-12-2016", "time":"2:00"},        {"location":"location2", "date":"01-01-2017", "time":"3:00"},        {"location":"location2", "date":"01-01-2017", "time":"4:00"},    ];  var transformed = showtimesData.reduce(function(obj, show){  //var { location, date, time } = show; //if destructuring is available  var location = show.location,      date = show.date,      time = show.time,      objLocation = obj[location] = obj[location] || { dates : { } },      dates = objLocation.dates,      date = dates[date] = dates[date] || [ ];      date.push(time);      return obj;}, {});results.innerHTML = JSON.stringify(transformed, null, '\t');
<pre id="results"></pre>