
04.08.2017, 08:37
|
Аспирант
|
|
Регистрация: 25.02.2015
Сообщений: 41
|
|
Формируем ленту из разных событий
Всем привет!
Помогите решить такую задачку...
Есть объекты и массивы.
Например:
{
"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
|
|

04.08.2017, 08:41
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
"simp1" : [ и "simp2" : [ - это ошибка.
|
|

04.08.2017, 08:44
|
Аспирант
|
|
Регистрация: 25.02.2015
Сообщений: 41
|
|
Да, точно, забыл в массив объединить.
|
|

04.08.2017, 08:52
|
 |
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,254
|
|
Сообщение от tk.stas
|
Из одного массива создать ленту я понимаю, а вот как из в всех в одну и с сортировкой по дате.
|
Если можешь делать простой - значит нужно сложный свести к простому.
Пройдись по данным объекта, запихни все, найденные элементы массивов в один. А как работать с одним массивом ты уже знаешь... 
|
|

04.08.2017, 08:57
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
tk.stas,
на форуме, рони набил себе мозоли о клаву, создавая ответы на "как отсортировать объект по ...", ищите, это уже есть готовое. Но если этот объект порождает ваш сервер, то сортировку уж лучше делать сразу на нем. А вывод всего в одну, это пройтись циклом и вывод.
|
|

04.08.2017, 09:12
|
Аспирант
|
|
Регистрация: 25.02.2015
Сообщений: 41
|
|
|
|

04.08.2017, 12:37
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,144
|
|
Сообщение от 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>
|
|

04.08.2017, 13:17
|
Аспирант
|
|
Регистрация: 25.02.2015
Сообщений: 41
|
|
Сообщение от рони
|
???
<!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
|
|

04.08.2017, 13:25
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,144
|
|
tk.stas,
data.events.prop2.simp1[0].date
|
|

04.08.2017, 13:33
|
Аспирант
|
|
Регистрация: 25.02.2015
Сообщений: 41
|
|
Сообщение от рони
|
tk.stas,
data.events.prop2.simp1[0].date
|
Нет. Мне надо чтоб я ввел значение 'Дата3', а скрипт мне показал путь к этому значению data.events.prop2.simp1[0].date.
Последний раз редактировалось tk.stas, 04.08.2017 в 13:50.
|
|
|
|