鉴于以下对象的数组:如何按日期对数组中的项目进行分组?
[
{
"notes": "Game was played",
"time": "2017-10-04T20:24:30+00:00",
"sport": "hockey",
"owner": "steve",
"players": "10",
"game_id": 1,
},
{
"notes": "Game was played",
"time": "2017-10-04T12:35:30+00:00",
"sport": "lacrosse",
"owner": "steve",
"players": "6",
"game_id": 2,
},
{
"notes": "Game was played",
"time": "2017-10-14T20:32:30+00:00",
"sport": "hockey",
"owner": "steve",
"players": "4",
"game_id": 3,
},
{
"notes": "Game was played",
"time": "2017-10-04T10:12:30+00:00",
"sport": "hockey",
"owner": "henry",
"players": "10",
"game_id": 4,
},
{
"notes": "Game was played",
"time": "2017-10-14T20:34:30+00:00",
"sport": "soccer",
"owner": "john",
"players": "12",
"game_id": 5,
}
]
我想创建一个新的阵列,这将创建一个对象,每个日期(如钥匙)和任何游戏在游戏上市当日播放(另一键)在同一个对象中。
新的数组应该是这样的:
[
{
date:'date string',
games:[array of games played on the date]
},
{
date: 'other date',
games:[games under the other date]
}
]...
这里是我做了什么:
let t = this.state.data; (data above)
let list = [];
for (let i = 0; i < t.length; i++) {
let dates = t[i].time.slice(0,10);
if (!list[dates]) {
list[dates] = [];
}
list[dates].push(t[i]);
}
我的版本返回与日期为值的数组,然后里面的那些的游戏列出,但我想列出它们在不同的键相同的对象。
任何帮助或指导将不胜感激。
你尝试过这么远吗?这里的解决方案非常简单。 –
嗨斯宾塞,我不确定如何在评论中发布代码,但我创建了一个空数组,并运行了for循环来遍历第一个信息。我剪切原始日期以获取(yyyy-mm-dd)格式,然后创建另一个for循环来检查当前空数组中是否存在该日期,如果没有,我将为此创建一个新的密钥日期,然后将任何游戏传入游戏密钥。起初,我得到一个无限循环,我的记忆崩溃了,然后我一直覆盖我以前的对象。 – Blake
您不想在评论中发布代码,而是将其作为编辑添加到问题中。 –