Формируем ленту из разных событий
Всем привет!
Помогите решить такую задачку... Есть объекты и массивы. Например: { "events" : { "prop1" : { "simple1" : [ { "title" : "Заголовок1_1", "date" : "Дата1_1", }, { "title" : "Заголовок1_2", "date" : "Дата1_2", } ], "simple2" : [ { "title" : "Заголовок2", "date" : "Дата2", } ] }, "prop2" : { "simp1" : [ { "title" : "Заголовок3", "type" : "Тип1", "date" : "Дата3", } ], "simp2" : [ { "title" : "Заголовок4", "type" : "Тип2", "date" : "Дата4", } ] } } } Необходимо объединить весь объект в одну ленту. Из одного массива создать ленту я понимаю, а вот как из в всех в одну и с сортировкой по дате. Должно получиться так: 1. Заголовок1_1 - Дата1_1 2. Заголовок1_2 - Дата1_2 3. Заголовок2 - Дата2 4. Заголовок3 - Тип1 - Дата3 4. Заголовок3 - Тип2 - Дата4 |
"simp1" : [ и "simp2" : [ - это ошибка.
|
Да, точно, забыл в массив объединить.
|
Цитата:
Пройдись по данным объекта, запихни все, найденные элементы массивов в один. А как работать с одним массивом ты уже знаешь... :) |
tk.stas,
на форуме, рони набил себе мозоли о клаву, создавая ответы на "как отсортировать объект по ...", ищите, это уже есть готовое. Но если этот объект порождает ваш сервер, то сортировку уж лучше делать сразу на нем. А вывод всего в одну, это пройтись циклом и вывод. |
Цитата:
Понял. Спасибо. |
Цитата:
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function() { var data ={ "events" : { "prop1" : { "simple1" : [ { "title" : "Заголовок1_1", "date" : "Дата1_1" }, { "title" : "Заголовок1_2", "date" : "Дата1_2" } ], "simple2" : [ { "title" : "Заголовок2", "date" : "Дата2" } ] }, "prop2" : { "simp1" : [ { "title" : "Заголовок3", "type" : "Тип1", "date" : "Дата3" } ], "simp2" : [ { "title" : "Заголовок4", "type" : "Тип2", "date" : "Дата4" } ] } } } function fn(a) { var c = []; Object.keys(a).forEach(function(d) { "title" == d ? c.push(a) : "object" == typeof a[d] && (c = c.concat(fn(a[d]))) }); return c } fn(data). //.sort() неизвестно как сортировать forEach(function(a, c) { a = Object.keys(a).map(function(c) { return a[c] }).join("-"); $("<li>", { text: a }).appendTo("ol") }); }); </script> </head> <body> <ol> </ol> </body> </html> |
Цитата:
А подскажи пожалуйста, как можно определить путь к значению в объекта. т.е путь к "Дата3" = data.prop2.simp1 |
tk.stas,
data.events.prop2.simp1[0].date |
Цитата:
|
Часовой пояс GMT +3, время: 03:14. |