Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Выбор из 3-х мерного JSON (https://javascript.ru/forum/css-html/50698-vybor-iz-3-kh-mernogo-json.html)

devastor 07.10.2014 20:30

Выбор из 3-х мерного JSON
 
Есть JSON вызывается в формате
data.Cities[i].Services[j].Stations[f].Name

Cities[i] Services[j], и Stations[f] массивы - как в цике перебрать все данные?
если использовать
while (data.Cities[i].Name != null){}

то цикл падает на с ошибкой "data.Cities[i].Name is undefined", что в принципе понятно, объект не определён... Но всё равно не понятно как в таком случае выбирать данные? Гугл предательски молчит

danik.js 07.10.2014 22:15

А три вложенных цикла чем не устраивают?

Попытался написать универсальный скрипт, собирающий листья дерева (по заданному формату пути):

(function() {


var data = {
	Cities: [{
			Services: [{
					Stations: [
						{Name:'S 1'},
						{Name:'S 2'}
					]
				}
			]
		}, {
			Services: [{
					Stations: [
						{Name:'S 3'},
						{Name:'S 4'}
					]
				}
			]
		}
	]
};

var path = 'Cities/Services/Stations'.split('/');
items = [];
function extract(data, level) {
	level = level || 0;
	var key = path[level];
	if (key) {
		for (var i = 0; i < data[key].length; i++) {
			extract(data[key][i], level + 1);
		}
	} else {
		items = items.concat(data);
	}
}
extract(data);

alert(JSON.stringify(items));
})();


Как можно переписать это с использованием map/reduce?


Часовой пояс GMT +3, время: 01:42.