2016-11-04 116 views
0

我正在尝试重构按日期排序的json响应。如何在React Native中按日期进行分组

这里是例子的Json我:

"data": [ 
    { 
    "game_id": "728721", 
    "game_date": "2016-11-03 20:25:00", 
    }, 
    { 
    "game_id": "728722", 
    "game_date": "2016-11-06 13:00:00", 
    } 
] 

我想显示日期在我的列表视图分组部分。

+0

这与React本机有什么关系?听起来你只是想改变数据结构。如果是这样,请提供一个您希望看到的数据结构的示例 –

+0

我不确定您是否想要按(按日期排序)或按日期排序(按时间顺序排列,还是相反)对于这个问题)。 –

+0

罗布,这里是JSON结构在寻找: 必需的JSON格式数据 = { “日期1”:[{ // 游戏数据对象1 },{ // 游戏数据对象2 } , { //游戏数据对象3 },{ // 游戏数据对象4 }], “日期2”:[{ // 游戏数据对象5 },{ // 游戏数据对象6 }, { //游戏数据对象7 }] }; 实际JSON格式数据 = [{ // 游戏数据对象1 },{ // 游戏数据对象2 },{ // 游戏数据对象3 } ] – Vinay

回答

0

这看起来并不特定于React Native开发。也许尝试lodash#groupBy

+0

您好亚当 看看这个代码,这是我有,但抛出一个错误: var grouped = _.groupBy(response.data.results.data,function(item){ console.tron.log(item.game_data) return item.game_date; }); – Vinay

+0

谢谢你的回复。时刻“groupBy”的作品。这就是我所做的。 var groupedByDate = _.groupBy(response.data.results.data,function(item){ var dateMoment = moment(item.game_date); return dateMoment.day(String).format('LL') }) ; – Vinay

+0

不错!我很高兴为你工作。检查lodash解决问题的方法通常对我有帮助。 –

1

纯JavaScript的方法,没有图书馆

由于您的日期时间数据包含实际的字符串,一个海峡进可串入的日期和时间,然后依次通过根据每一个项目,并将它们组合的拆分迄今为止的关键。以下是一个示例(我没有经过测试,但它应该可以工作):

var groupData = (data) => { 
    let result = [] 

    for (var d in data) { 
     // get date from data 
     var date = d.game_date.split(' '); 

     // add into new array and use key as the date 
     if (!result[date]) { 
      result[date] = [d] 
     } else { 

      // if key already existed, extend into group 
      result[date].push(d) 
     } 
    } 

    return result; 
}