Показать сообщение отдельно
  #2 (permalink)  
Старый 07.10.2014, 22:15
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

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

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

(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?
__________________
В личку только с интересными предложениями

Последний раз редактировалось danik.js, 07.10.2014 в 22:19.
Ответить с цитированием