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