А три вложенных цикла чем не устраивают?
Попытался написать универсальный скрипт, собирающий листья дерева (по заданному формату пути):
(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?