Формируем ленту из разных событий
Всем привет!
Помогите решить такую задачку... Есть объекты и массивы. Например:
{
"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, время: 05:43. |