PDA

Просмотр полной версии : Поиск по таблице, остановить цикл


bulya123
20.08.2009, 16:27
Все привет! У меня такая трабла:
Есть табличка такого типа:

var USERS:Array = new Array(
[9035231127, 7777, "Петр Петрович", "Шлагбаум"],
[9034234233, 2343, "ВАСИЛИЙ", "ДУРАК"],
[9888888888, "Роман", "Трахтенберг"]
);

Первый элемент номер телефона, второй пин код, его может и не быть, тогда вместо него сразу идет имя. Есть переменная REQUEST содержащая номер телефона введеный пользоваьелем и переданный по LocalConnection из другой флэшки, необходимо сравнить с первым столбцом таблицы и если найденно совпадение, то нужно остановить цикл и записать в какую-то переменную 1, если телефон есть, а пин-кода нет, то 2, если нет телефона то 3. И желательно сделать так чтобы в переменную записывалось значение только один раз после прохождение всей таблицы.
Я делаю так:

for (i=0; i<USERS.length; i++) {
if (USERS[i][0] == REQUEST {
if(!isNaN(USERS[i][1])) {k = 1; break} else {k = 2; break}
} else {k = 3}
}
};

Но цикл не только не прерывается, если находит совпадение, да еще если совпадения нет, то в переменную 3 раза записывается значение, а это не есть хорошо, потому что на переменную установлен слушатель, который при изменении переменной отправляет переменную назад.
Помоги пожалста, премного благодарен:)

udaaff
20.08.2009, 18:11
Одной скобки не хватает, а одна лишняя.
for (i=0; i<USERS.length; i++) {
if (USERS[i][0] == REQUEST) {
if(!isNaN(USERS[i][1])) {k = 1; break} else {k = 2; break}
} else {k = 3}
}


Капслоком пишутся константы, а не переменные.

var users:Array =
[
{ phone: 9035231127, pin: 7777, name: "Петр Петрович", nick: "Шлагбаум" },
{ phone: 9034234233, pin: 2343, name: "ВАСИЛИЙ", nick: "ДУРАК" },
{ phone: 9888888888, name: "Роман", nick: "Трахтенберг" }
];

var phone:Number = 9888888888;
var k:Number = 3;

var length:Number = users.length;
for (var i:Number = 0; i < length; i++)
{
var o:Object = users[i];
if (o.phone == phone)
{
k = o.pin ? 1 : 2;
break;
}
}

trace(k); // 2

bulya123
20.08.2009, 18:32
Спасибо, но уже решил правда немного подругому