 
			
				16.05.2019, 12:41
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 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);
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				16.05.2019, 12:52
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.11.2017 
					
					
					
						Сообщений: 641
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 json покажи ) 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				16.05.2019, 13:18
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 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"),
            ]),  
        ]                     
    )
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				16.05.2019, 16:17
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.10.2016 
					
					
					
						Сообщений: 1,013
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		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);
        }));
    }));
});
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |