Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   сравнение по нескольким условиям (http://www.flasher.ru/forum/showthread.php?t=132200)

TanaTiX 06.11.2009 11:31

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

psylover 06.11.2009 11:49

делаете два вложенных цикла и сравниваете все элементы одного массива со всеми элементами другого массива.длинна массивов узнаётся
Код AS3:

array.length()


TanaTiX 06.11.2009 12:35

psylover, это не подходит, т.к. при этом сравнение происходит при каждой итерации, а мне нужно одновременно

camelot 06.11.2009 12:51

если я правильно понял:

пример.
есть массив №1 [A, B, C, D, E, F]
есть массив №2 [G, H, I, J, K, L, M, N]

и вам надо каждую "итерацию" сравнивать все элементы №1 со всеми элементами №2 ?

никакого другого разумного способа, кроме как предложенного "psylover" я думаю нет

bicubic_bublic 06.11.2009 13:00

Цитата:

Сообщение от TanaTiX (Сообщение 863714)
psylover, это не подходит, т.к. при этом сравнение происходит при каждой итерации, а мне нужно одновременно

конкретизируйте задачу. из ваших требований ничего не понятно.

psylover 06.11.2009 13:10

Цитата:

Сообщение от TanaTiX (Сообщение 863714)
psylover, это не подходит, т.к. при этом сравнение происходит при каждой итерации, а мне нужно одновременно

вы толи не можите сформулировать что вам именно нужно толи еще что то , почему не подходит метод когда вы берете один элемент массива А и сравниваете его со всеми элементами массива В ? и сделайте там какой нибудь булевый переключатель котрый отвечает за выполнение всех условий.

TanaTiX 06.11.2009 13:23

Немного упрощу.
Код AS3:

var a:uint=3;
var b:Array=[1,5,3,8,2];//массив, количество и значение элементов которого не известно
if(a==b[0] || a==b[1] || a==b[2] || a==b[3] || a==b[4]....){//сравнение, может быть не только "или" (||), но и любым другим
...
}

Надеюсь смог объяснить...

bicubic_bublic 06.11.2009 14:02

Код AS3:

function compareOr(item:uint, arr:Array):Boolean {
        for (var i:Number = 0; i < arr.length; i++) {
                if (item == arr[i]) {
                        return true;
                }
        }
        return false;
}
 
 
function compareOrSimple(item:uint, arr:Array):Boolean {
        return arr.indexOf(item) != -1;
}
 
function compareAnd(item:uint, arr:Array):Boolean {
        for (var i:Number = 0; i < arr.length; i++) {
                if (item != arr[i]) {
                        return false;
                }
        }
        return true;
}
 
var a:uint=3;
var b:Array = [1, 5, 3, 8, 2];
 
if (compareOr(a, b)) {
        ...
}

Добавлено через 12 минут
Еще пример для более широкой задачи
Код AS3:

function compareOr(item:uint, arr:Array, cmpFunction:Function):Boolean {
        for (var i:Number = 0; i < arr.length; i++) {
                if (cmpFunction(item, arr[i])) {
                        return true;
                }
        }
        return false;
}
function compareAnd(item:uint, arr:Array, cmpFunction:Function):Boolean {
        for (var i:Number = 0; i < arr.length; i++) {
                if (!cmpFunction(item, arr[i])) {
                        return false;
                }
        }
        return true;
}
 
function cmpEQ(item1:uint, item2:uint):Boolean {
        return item1 == item12;
}
 
function cmpGT(item1:uint, item2:uint):Boolean {
        return item1 > item2;
}
 
function cmpGTE(item1:uint, item2:uint):Boolean {
        return item1 >= item2;
}
 
var a:uint=3;
var b:Array = [1, 5, 3, 8, 2];
 
if (compareOr(a, b, cmpEQ)) {
        ...
}


TanaTiX 06.11.2009 14:22

bicubic_bublic, спасибище, буду разбираться.


Часовой пояс GMT +4, время: 23:27.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.