2016-11-04 3 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", 
    } 
] 

Я хочу, чтобы отобразить разделы, сгруппированные по дате в моей ListView.

+0

Что это связано с React native? Похоже, вы просто хотите преобразовать структуру данных. Если да, укажите пример структуры данных, которую вы хотели бы видеть. –

+0

Я не уверен, хотите ли вы группировать (объединить тех, кто имеет ту же дату) или упорядочить по дате (поставить их в хронологическом порядке или наоборот в этом отношении). –

+0

Роб, вот структура JSON ищу: Требуемый формат JSON данных = { "Дата 1": [объект { // Игровые данные 1 }, { // Игра объекта данных 2 } , {// игр данных объекта 3 }, { объект // игры данных 4 }], "Дата 2": [ {// игра объект данных 5 }, { // Объект данных игры 6 }, { // Объект данных об игре 7 }] }; фактический формат данных JSON = [ {// игры объекта данных 1 }, { // Игра объекта данных 2 }, { // Игра объекта данных 3 } ] – Vinay

ответ

0

Это не похоже на Реагирование Нарожденное развитие. может быть, попробовать lodash#groupBy

+0

Hi Adam, взгляд на этот код, это то, что у меня есть, но бросает ошибку: вар сгруппированных = _.groupBy (response.data.results.data, функция (элемент) { 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); дата возвращенияMoment.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; 
} 
Смежные вопросы