Показать сообщение отдельно
  #1 (permalink)  
Старый 07.07.2013, 20:51
Новичок на форуме
Отправить личное сообщение для loen Посмотреть профиль Найти все сообщения от loen
 
Регистрация: 02.04.2011
Сообщений: 4

Проблема преобразования ассоциативного массива в обычный
Здравствуйте. Есть такая проблема. В общем:
Есть сайт. На сайте находится <input type="text">. При вводе любой буквы в это поле работает автозаполнение(как в гугле). Для автозаполнения использую плагин jQuery UI.
Есть ассоциативный массив вида:
technics = {tv:'Телевизор',lcdtv:'LCD телевизор',plasmatv:'Plasma телевизор'};
Так вот, для использования этого ассоциативного массива как источник откуда будут браться варианты заполнения поля, для плагина требуется преобразовать его в обычный массив, где каждый элемент его это ассоциативный массив:
[ { label: "Лэйбл значения", value: "значение" }, ... ]
Для этого написал функцию:
function objToArray (obj) {
    var res = []; var tempobj = {};
    for (var key in obj) {
	tempobj.label = obj[key]; tempobj.value = key; 
        res.push(tempobj);
    }
    return res;
}
И вроде бы все должно работать, но вместо такого массива:
[ { label: "Телевизор", value: "tv" }, { label: "LCD Телевизор", value: "lcdtv" },{ label: "Plasma Телевизор", value: "plasmatv" }]
Функция возвращает мне такой массив:
[ { label: "Plasma Телевизор", value: "plasmatv" }, { label: "Plasma Телевизор", value: "plasmatv" }, { label: "Plasma Телевизор", value: "plasmatv" }]
То есть все элементы в новом массиве являются последним элементом ассоциативного массива.
Что я делаю не так?

Последний раз редактировалось loen, 07.07.2013 в 21:25.
Ответить с цитированием