Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.05.2019, 12:41
Интересующийся
Отправить личное сообщение для Роман1479 Посмотреть профиль Найти все сообщения от Роман1479
 
Регистрация: 06.10.2017
Сообщений: 24

Создать массив в нужном виде
Добрый день! Подскажите пожалуйста как сформировать такой массив как ниже. Т.е. у меня есть вывод из базы на AJAX, в success возвращается JSON строка.
Я делаю JSON.parse и я должен через for сформировать такой массив.
Помогите пожалуйста.
var schools = [
    new School (1, "School 1", [ 
            new Class(1, "", [
                new Student(1, "1.1"),
                new Student(2, "1.2"),
            ]),  
        ]                     
    ),
    ...
];
var vm = new vModel(schools);
Ответить с цитированием
  #2 (permalink)  
Старый 16.05.2019, 12:52
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

json покажи )
Ответить с цитированием
  #3 (permalink)  
Старый 16.05.2019, 13:18
Интересующийся
Отправить личное сообщение для Роман1479 Посмотреть профиль Найти все сообщения от Роман1479
 
Регистрация: 06.10.2017
Сообщений: 24

Код:
[
{"id":42","title":"карточка 1","type":"блок1"},
{"id":"56","title":"карточка 2","type":"блок2"},
{"id":"34","title":"карточка 3","type":"блок2"},
{"id":"21","title":"карточка 4","type":"блок2"}
]
Должно быть так:

new School (1, "блок1", [ 
            new Class(1, "", [
                new Student(1, "карточка 1", "42"),
            ]),  
        ]                     
    ),
    new School (1, "блок2", [ 
            new Class(1, "", [
                new Student(2, "карточка 2", "56"),
                new Student(2, "карточка 3", "34"),
                new Student(2, "карточка 4", "21"),
            ]),  
        ]                     
    )
Ответить с цитированием
  #4 (permalink)  
Старый 16.05.2019, 16:17
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

json - то что спарсили из строки

Сначала группируем данные, потом из них делаем объекты
var schools = json.reduce(function(r, item) {

    var school = r.map[item.type];
    if (!school) {
        school = r.map[item.type] = {
            id: item.type,
            classes: [{
                id: '',
                studs: []
            }]
        };
        r.arr.push(school);
    }
    var cls = school.classes[0];
    cls.studs.push(item);
    return r;

}, { arr: [], map: Object.create(null) }).arr.map(function (school, idx) {
    return new School(idx + 1, school.id, school.classes.map(function (cls, idx) {
        return new Class(idx + 1, cls.id, cls.studs.map(function (stud, idx) {
            return new Student(idx + 1, stud.title, stud.id);
        }));
    }));
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать массив с атрибутами, взятыми у тегов klesha jQuery 2 08.10.2015 08:09
Можно ли создать такой массив? Иннокентий Общие вопросы Javascript 3 14.09.2014 21:57
Как создать массив из картинок KamalovRadik Firefox/Mozilla 17 04.10.2011 14:06
Создать массив не содержащие данные другого масива KamalovRadik Общие вопросы Javascript 1 05.09.2011 03:30
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14