Выбор из 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, время: 01:42. |