Reputation: 869
I have an array of key value pairs and I would like to group it together based on date. The gameDate
is actually like "2014-01-01 12:00:00" so I'm splitting it and trying to use the date as key.
var a = {};
(function() {
for (var i = 0; i < games.length; i++) {
if (a[games[i]['gameDate'].split(' ')[0]]) {
var b = [];
b = [a[games[i]['gameDate'].split(' ')[0]]];
b.push(games[i]);
a[games[i]['gameDate'].split(' ')[0]] = b;
}else {
a[games[i]['gameDate'].split(' ')[0]] = games[i];
}
}
})();
console.log(a);
I've "googled" for quite some time...I think what I'm trying to get is an array of objects...but this is the closest I could get and it's still very messed up. I would like to group all games[i]
based on their date. Please help out.
for (var i = 0; i < games.length; i++) {
if ([games[i]['gameDate'].split(' ')[0]] in a) {
var b = [];
b = a[games[i]['gameDate'].split(' ')[0]];
b.push(games[i]);
a[games[i]['gameDate'].split(' ')[0]] = b;
}else {
a[games[i]['gameDate'].split(' ')[0]] = [];
a[games[i]['gameDate'].split(' ')[0]].push(games[i]);
}
}
Upvotes: 2
Views: 3315
Reputation: 177685
This works
var games = [{
gameDate: "2015-01-01 12:00:00",
gameName: "bla 1"}, {
gameDate: "2015-01-02 12:00:00",
gameName: "bla 2"}, {
gameDate: "2015-01-02 12:00:00",
gameName: "bla 3"} ]
// ----------
var a = {};
for (var i=0; i < games.length;i++) {
var d = games[i]['gameDate'].split(' ')[0];
if (!a[d]) a[d] = [];
a[d].push(games[i]);
}
console.log(a)
// this one destroys the original array but uses proper strings as keys
var a = {};
while (games.length) {
var dateString = games[0]['gameDate'].split(' ')[0].replace(/-/g, "");
if (!a["d" + dateString]) {
a["d" + dateString] = [];
}
a["d" + dateString].push(games.shift());
}
console.log(a)
Upvotes: 1
Reputation: 238
Try this code
for (var i = 0; i < games.length; i++) {
var date = games[i]['gameDate'].split(' ')[0];
if (!a[date]) {
a[date] = [];
}
a[date].push(games[i]);
}
Upvotes: 1