Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Перебрать в цикле многомерный массив на JQuery (https://javascript.ru/forum/jquery/29387-perebrat-v-cikle-mnogomernyjj-massiv-na-jquery.html)

arachnoz 26.06.2012 21:24

Для тех, кто следит за моими успехами :D
Привёл БД к такому состоянию:
var twns ={
'Абакан':['9-12',3150,90,87,83,68,65,62],
'Альметьевск':['5-7',2520,72,69,65,53,50,47]};


Но всё равно, не понимаю как перебрать города в цикле и что засунуть в Autocomplete... :no:

Deff 26.06.2012 22:01

var ALLarray ={
Абакан:['9-12',3150,90,87,83,68,65,62],
Альметьевск:['5-7',2520,72,69,65,53,50,47],
Тайшет:['5-7',2520,72,69,65,53,50,47],
};
for(i in ALLarray){
 alert('Это Альметьевск? = '+(i=='Альметьевск'))
 alert(i+':\n'+ALLarray[i]);
}

arachnoz 26.06.2012 22:29

Переделал БД на
var twns ={
'Абакан':['9-12',3150,90,87,83,68,65,62],
'Альметьевск':['5-7',2520,72,69,65,53,50,47]};

Но всё равно не догоняю, как обратиться к городу по порядковому номеру в ... объекте?

Deff 26.06.2012 22:40

Цитата:

Сообщение от arachnoz
Но всё равно не догоняю, как обратиться к городу по порядковому номеру в ... объекте?

:) А смысл ?

Deff 26.06.2012 22:44

Кроссбраузерно: (Если без старых ИЕ мон и без доп массива
SITYarr = ['Абакан','Альметьевск','Тайшет']
var ALLarray ={
Абакан:['9-12',3150,90,87,83,68,65,62],
Альметьевск:['5-7',2520,72,69,65,53,50,47],
Тайшет:['5-7',2520,72,69,65,53,50,47],
};
alert("Выводим 1-й город:"+'\n'+SITYarr[0]+':\n'+ALLarray[SITYarr[0]]);

for(i in ALLarray){
 alert('Это Альметьевск? = '+(i=='Альметьевск'))
 alert(i+':\n'+ALLarray[i]);
}

arachnoz 26.06.2012 22:58

Deff - спасибо большое за подсказки. Я по первости на форуме не увидел пейджера и постил два сообщения подряд :)


Дело в том, что Autocomplete принимает на вход простой одномерный массив вида
['Абакан', 'Альметьевск', 'И прочее'];

Т.к. моя импровизированная БД уже содержит их, я хотел сформировать одномерный массив, выдрав ключи из многомерного.
А все примеры, которые мне попались за пару дней гугления предполагают, что значение ключа известно.

zebra 26.06.2012 23:19

А если название города будет например Нижний новгород?

arachnoz 26.06.2012 23:23

Тогда autocomplete вернёт false.

arachnoz 26.06.2012 23:29

Тем не менее, всё равно туповато выходит у меня.

Конструкция

var twns ={
'Абакан':['9-12',3150,90,87,83,68,65,62],
'Альметьевск':['5-7',2520,72,69,65,53,50,47],
'Анапа':['4-5',2170,62,60,56,45,42,39]};

for(i in twns){
alert(i+':\n'+twns[i]);}


Выводит по очереди все массивы, содержащиеся в объекте. Я правильно выражаюсь? :) Это же объект?
Соответственно, напрямую получить название города я не могу. Вариант - в этом же цикле парсить каждый массив и отделять ключ. Или регуляркой его порвать и загнать в другой массив.
Такие мысли.

arachnoz 26.06.2012 23:37

Снова нашёл решение на этом чудо-форуме, на этот раз тут :)


Часовой пояс GMT +3, время: 22:33.