Страница 1 из 1
OpenLayers: итерация по слоям
Добавлено: 10 ноя 2010, 13:27
Denis Rykov
Допустим, у нас есть 2 слоя lay1 и lay2. Как можно с помощью цикла for ... in пройтись по свойствам этих слоёв? Попробовал конструкцию вида for l in [lay1,lay2], но она совершает обход по индексам массива, а не по элементам. Остановился на варианте вида:
Код: Выделить всё
k={'one':'lay1', 'two':'lay2'}
for (l in k){
alert(k[l].name);
}
Можно ли как-то обойтись без создания хэша?
Re: OpenLayers: итерация по слоям
Добавлено: 10 ноя 2010, 14:53
Mavka
Вы хотите как в python?
В js так не получится. Ваш вариант тоже не плох, но я бы заменил хэш на массив:
P.S. Нашел интерпретатор js как раз на такой случай -
Interpreter. А вот offline только за денежку :(
Re: OpenLayers: итерация по слоям
Добавлено: 10 ноя 2010, 16:11
Denis Rykov
Спасибо, посмотрю, что за интерпретатор.
Mavka писал(а):Вы хотите как в python?
Угу, с питоном побольше опыта, привык к такому поведению.
Re: OpenLayers: итерация по слоям
Добавлено: 11 ноя 2010, 06:32
Denis Rykov
Кстати, какой из вариантов обхода массива предпочтительней или они равнозначны (lay в данном случае векторный слой)?
Код: Выделить всё
for (var i = 0; i<lay.features.length; i++)
или
Re: OpenLayers: итерация по слоям
Добавлено: 11 ноя 2010, 12:55
Mavka
По-моему - без разницы, в тексте стандарта рекомендаций не нашел.
Что то подобное вашей задумке есть в JavaScript 1.7, кажется через оператор let() можно провернуть подобную штуку. Но 1.7 работает только в FireFox, а вариант 1.8 хоть и стал стандартом ECMAScript version 5, но еще не реализован полностью в других браузерах.
Re: OpenLayers: итерация по слоям
Добавлено: 11 ноя 2010, 18:45
Mavka
Есть, нашел! Вот так это делается:
Код: Выделить всё
a = ['a', 'b', 'c'];
a.forEach(function(a) {
alert(a);
});
Со слоями:
Код: Выделить всё
lay1 = {name: 'aaa', count: 1};
lay2 = {name: 'bbb', count: 2};
arr = [lay1, lay2];
arr.forEach(function(arr) {
alert(arr.name + ' # ' + arr.count);
});
А еще хорошую консоль нашел, для FireFox -
Execute JS.