Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > проблема с элементами массива


Автор: krinart 3.9.2008, 23:44
добрый вечер... столкнулся я с проблемой, о которой вобщем даже писать смешно.... вот есть у меня такой участок кода

Код

i= 0;    
    
    for(var iHero= 0; iHero<Heroes.length; iHero++)
    {            
        for(iUnit= 0; iUnit<Heroes[iHero].heroUnit.length; iUnit++)
        {            
            // создадим запись в таблице Units            
            Units[i]= new Array();
            Units[i]= UnitsTable[Heroes[iHero].heroUnit[iUnit]];

            // добавим id героя-хозяина
            Units[i].heroID= iHero;
            
            
            Units[i].coord= new Array();    // обяъвим массив координат клетки юнита
            Units[i].coord.left= -1;                // x- координата
            Units[i].coord.top= -1;        // y- координата
                    
            
            // вместо id заготовки юнита в таблицу Heroes впишем id созданного юнита
            
            Heroes[iHero].heroUnit[iUnit]= i;
            i++;            
        }                
    }


здесь из таблицы UnitsTable, где хранятся шаблоны юнитов, выбирается нужный и всталяется в таблицу Units, а id этой записи заносится в массив юнитов героя

и всё бы ничего, но есть одна загвоздка, измение какогонибудь поля в строке любого элемента, почемуто меняет все остальные, в которых поле unitID совпадает
напрмер есть такой участок кода

Units[1].coord.left= 220;

после этого поле coord.left становится равным 220 у всех элементов, у которых поле 
unitID== Units[1].unitID

я часа два бился над этой проблемой, так и не смог решить её... надеюсь только на вашу помощь

Автор: timon1410 9.9.2008, 23:22
замените 
Код

new Array()
 на 
Код

new Object()
.

Если интересно почему, то читайте чем различаются в яваскрипте массивы и объекты(хеши)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)