Создать массив в нужном виде
Добрый день! Подскажите пожалуйста как сформировать такой массив как ниже. Т.е. у меня есть вывод из базы на 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); |
json покажи )
|
Код:
[ 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"), ]), ] ) |
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); })); })); }); |
Часовой пояс GMT +3, время: 17:22. |