как вариант http://jsfiddle.net/41qp5hua/
|
Цитата:
{ "C":[{"path":["C","C3","C8","C2","C12","C"],"point":[["48.5515","29.5915"],["45.729","29.7453"],["48.0188","31.0637"],["47.6686","32.404"]],"pointCenter":[["48.4931","32.2721"]]},{"path":["C","C11","C"],"point":[["49.3284","31.1077"]],"pointCenter":[["48.4931","32.2721"]]}], "D":[{"path":["D","D7","D5","D4","D14","D"],"point":[["48.039","38.2796"],["47.1016","35.2604"],["48.6972","35.7438"],["50.0099","37.1602"]],"pointCenter":[["49.5623","34.5573"]]},{"path":["D","D10","D"],"point":[["50.0695","33.7004"]],"pointCenter":[["49.5623","34.5573"]]}], "A":[{"path":["A","A0","A13","A1","A"],"point":[["51.5378","33.5307"],["50.3561","32.1842"],["50.2153","29.5036"]],"pointCenter":[["50.4404","30.5582"]]}], "B":[{"path":["B","B9","B6","B"],"point":[["50.8827","25.3508"],["50.039","25.2796"]],"pointCenter":[["49.3905","27.0426"]]}] } а почему мой цикл не выводит там где только один элемент в массиве, ведь его длина =1, а цикл начинает считать с 0? |
Dark19,
<script> var msg = { "C": [{ "path": ["C", "C3", "C8", "C2", "C12", "C"], "point": [ ["48.5515", "29.5915"], ["45.729", "29.7453"], ["48.0188", "31.0637"], ["47.6686", "32.404"] ], "pointCenter": [ ["48.4931", "32.2721"] ] }, { "path": ["C", "C11", "C"], "point": [ ["49.3284", "31.1077"] ], "pointCenter": [ ["48.4931", "32.2721"] ] }], "D": [{ "path": ["D", "D7", "D5", "D4", "D14", "D"], "point": [ ["48.039", "38.2796"], ["47.1016", "35.2604"], ["48.6972", "35.7438"], ["50.0099", "37.1602"] ], "pointCenter": [ ["49.5623", "34.5573"] ] }, { "path": ["D", "D10", "D"], "point": [ ["50.0695", "33.7004"] ], "pointCenter": [ ["49.5623", "34.5573"] ] }], "A": [{ "path": ["A", "A0", "A13", "A1", "A"], "point": [ ["51.5378", "33.5307"], ["50.3561", "32.1842"], ["50.2153", "29.5036"] ], "pointCenter": [ ["50.4404", "30.5582"] ] }], "B": [{ "path": ["B", "B9", "B6", "B"], "point": [ ["50.8827", "25.3508"], ["50.039", "25.2796"] ], "pointCenter": [ ["49.3905", "27.0426"] ] }] } function fn(data) { Object.keys(data).forEach(function (key) { data[key].forEach(function(el,i) { document.write(key + " " + i + " " +JSON.stringify(el["point"])+ "<br>") }) })}; fn(msg) </script> |
Цитата:
|
Цитата:
|
Цитата:
|
рони,
спасибо, работает отлично. А есть возможность прокручивать элементы массива внутри свойств функции? Например есть функция вывода точек на карту ymaps.route к ней в свойства передаются элементы из массива. Первая точка и последняя статические(их нужно вывести один раз при обходе каждого массива), а вот промежуточные точки type: 'viaPoint' нужно вывести все из массива. То есть результат должен получится такой: начальная точка el['pointCenter'][0] потом вывод всех точек из массива C->0 потом конечная точка el['pointCenter'][0], el['pointCenter'][0] потом вывод всех точек из массива C->1 потом конечная точка el['pointCenter'][0], el['pointCenter'][0] потом вывод всех точек из массива D->0 потом конечная точка el['pointCenter'][0] и т.д. Можно ли такое сделать и как? Вот код: function fn(data) { Object.keys(data).forEach(function (key) { var p = 0, x = 0; data[key].forEach(function(el,i) { console.log(el["point"]); for(p=0;p<el['point'].length;p++){ ymaps.route([ el['pointCenter'][0], { type: 'viaPoint', point: el['point'][p] }, el['pointCenter'][0] ]).then( function (route) { myMap.geoObjects.add(route); }, function (error) { alert("Возникла ошибка: " + error.message); } ); } }); }); } fn(msg); |
Цитата:
|
Часовой пояс GMT +3, время: 12:59. |