¿Cómo puedo agrupar elementos con el mismo valor de nick que pertenecen a la misma fecha en una nueva matriz (por nick y fecha)? Estoy intentando lo siguiente, pero produce la misma matriz de la que estoy tratando de obtener.
Quiero agrupar datos por mismo usuario de la misma fecha
var games = { '2021-12-15': [{ nick: "john", gameDate: "2015-12-15 12:00:00", gameName: "bla 1" }, { nick: "john", gameDate: "2015-12-15 12:40:00", gameName: "bla 2" }], '2021-12-16': [{ nick: "nicky", gameDate: "2016-12-16 12:00:00", gameName: "bla 3" }, { nick: "mike", gameDate: "2016-12-16 12:00:00", gameName: "bla 3" }, { nick: "mike", gameDate: "2016-12-16 12:00:00", gameName: "bla 3" } ] } var a = {}; for (let val in games) { console.log(val) for (var i = 0; i < games[val].length; i++) { var d = games[val][i].gameDate.split(' ')[0]; if (!a[d]) a[d] = []; a[d].push(games[val][i]) } } console.log(a)Rendimiento esperado
{ '2021-12-15': [{ nick: "john" { nick: "john", gameDate: "2016-12-15 12:00:00", gameName: "bla 3" }, { nick: "john", gameDate: "2016-12-15 12:30:00", gameName: "bla 3" } }], '2021-12-16': [{ nick: "mike" { nick: "mike", gameDate: "2016-12-16 12:00:00", gameName: "bla 3" }, { nick: "mike", gameDate: "2016-12-16 12:15:00", gameName: "bla 3" } }] }Es difícil saberlo sin un formato de salida exacto, pero creo que esto es lo que buscas:
const games = { "2021-12-15": [ { nick: "john", gameDate: "2015-12-15 12:00:00", gameName: "bla 1", }, { nick: "john", gameDate: "2015-12-15 12:40:00", gameName: "bla 2", }, ], "2021-12-16": [ { nick: "nicky", gameDate: "2016-12-16 12:00:00", gameName: "bla 3", }, { nick: "mike", gameDate: "2016-12-16 12:00:00", gameName: "bla 3", }, { nick: "mike", gameDate: "2016-12-16 12:00:00", gameName: "bla 3", }, ], }; const result = Object.fromEntries( Object.entries(games).map(([key, value]) => [ key, value.reduce( (acc, cur) => (acc[cur.nick] = [...(acc[cur.nick] || []), cur], acc), {} ), ]) ); console.log(result);