PDA

Просмотр полной версии : Как сделать проверку на существование элемента массива?


Vindenta
11.01.2011, 19:50
Уважаемые Flasherы нужна ваша помощь!Подскажите как сделать проверку на существование элемента массива?
Пытался сделать проверку но она неверная...Нужно просто сложить существующие элементы массива.
while(i<21){
if(ID1BCorrector[i][3]!= undefined){
trace(ID1BCorrector[i][3]);
Bpoint=Bpoint+Number(ID1BCorrector[i][3]);
b_rezult.id1_Bpoint.text=Bpoint.toString();
}
i++;
};

КорДум
11.01.2011, 19:54
if (ID1BCorrector[i][3]) {
Особо в код не вникал, но вообще вот так.

Vindenta
11.01.2011, 20:14
TypeError: Error #1010: Термин не определен и не имеет свойств.
at SocketNetworkConnectionAdmin_fla::MainTimeline/onPublicMessage()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at it.gotoandplay.smartfoxserver.handlers::SysHandler/handlePublicMessage()
at Function/http://adobe.com/AS3/2006/builtin::apply()
at it.gotoandplay.smartfoxserver.handlers::SysHandler/handleMessage()
at it.gotoandplay.smartfoxserver::SmartFoxClient/xmlReceived()
at it.gotoandplay.smartfoxserver::SmartFoxClient/handleMessage()
at it.gotoandplay.smartfoxserver::SmartFoxClient/handleSocketData()

Выдает ошибку...

Bpoint=0;
while(i<21){
if (ID1BCorrector[i][3]) {
Bpoint=Bpoint+Number(ID1BCorrector[i][3]);
b_rezult.id1_Bpoint.text=Bpoint.toString();
}
i++;
}

КорДум
11.01.2011, 20:15
Это уже нужно у вас спросить, чего у вас там происходит. Код к ошибке не относится в рамках той информации, что вы предоставили.

Vindenta
11.01.2011, 20:22
Дело в в том, что я получаю данные через сокет сервер, в элементе массива ID1BCorrector[i][3] сохраняеться набранный балл, всего 20 заданий,и пользователь может их выполнять в любом порядке,т.е заполнение массива будет не последовательным ,а например пользователь ответил на 5 вопрос и получается массив
ID1BCorrector[5][3] будет заполнен,но остальные элементы еще не существуют...Поэтому мне нужно складывать значения уже существующих элементов массива...А ошибка возникает лишь при выполнении цикла приведенного выше..

КорДум
11.01.2011, 20:26
Я там ошибки не вижу.
Нормально оно выглядит вот так:
Bpoint = 0;
while (i < 21) {
if (ID1BCorrector[i][3]) {
Bpoint += Number(ID1BCorrector[i][3]);
b_rezult.id1_Bpoint.text = "" + Bpoint; // это смущает,
// у b_rezult есть свойство id1_Bpoint?
}
i++;
}

Vindenta
11.01.2011, 22:22
b_rezult этом символ где хранится текстовое поле id1_Bpoint,а данная проверка не работает ,если один из элементов массива не существует...Т.е если заполняется ID1BCorrector[5][3] ,цикл застопоривается на проверке ID1BCorrector[0][3],возникает ошибка приведенная выше.Как еще можно исключить несуществующие элементы массива,кроме того ,как им присвоить значение 0 или undefined?

КорДум
11.01.2011, 22:27
Ошибка указывает на вот это:
at SocketNetworkConnectionAdmin_fla::MainTimeline/onPublicMessage()
По-моему, у вас в момент проверки в ID1BCorrector[0][3] что-то лежит такое непонятное. То есть, этот элемент массива не null. Я лично не вижу ошибки в коде.

Vindenta
11.01.2011, 22:58
Ошибку решил:
var j=0;
Bpoint=0;
while(j<21){
if(ID1BCorrector[j] !=undefined){
if(ID1BCorrector[j][3] != undefined){
Bpoint+=Number(ID1BCorrector[j][3]);
b_rezult.id1_Bpoint.text=Bpoint.toString();
};
}
j++;
}

dimarik
11.01.2011, 23:55
Дело в в том, что я получаю данные через сокет сервер, в элементе массива ID1BCorrector[i][3] сохраняеться набранный балл

http://tsya.ru/