![]() |
|
||||||||||
|
|||||
|
Необходимо произвести сравнение по нескольким условиям. Проблема в том, что количество подобных условий не известно. К примеру 2 массива (если проще, то пусть один из них с постоянным количеством элементов, а второй - с динамически меняющимся) и нужно сравнить все элементы из одного массива со всеми элементами из другого.
Как лучше поступить в данной ситуации?
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 58
|
делаете два вложенных цикла и сравниваете все элементы одного массива со всеми элементами другого массива.длинна массивов узнаётся
|
|
|||||
|
Регистрация: Jul 2006
Сообщений: 26
|
если я правильно понял:
пример. есть массив №1 [A, B, C, D, E, F] есть массив №2 [G, H, I, J, K, L, M, N] и вам надо каждую "итерацию" сравнивать все элементы №1 со всеми элементами №2 ? никакого другого разумного способа, кроме как предложенного "psylover" я думаю нет |
|
|||||
|
Banned
[+4 25.09.09]
[+1 12.11.09] [+4 12.12.09] Регистрация: Sep 2009
Сообщений: 231
|
конкретизируйте задачу. из ваших требований ничего не понятно.
|
|
|||||
|
Регистрация: Jul 2009
Сообщений: 58
|
вы толи не можите сформулировать что вам именно нужно толи еще что то , почему не подходит метод когда вы берете один элемент массива А и сравниваете его со всеми элементами массива В ? и сделайте там какой нибудь булевый переключатель котрый отвечает за выполнение всех условий.
|
|
|||||
|
Немного упрощу.
Надеюсь смог объяснить...
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
Banned
[+4 25.09.09]
[+1 12.11.09] [+4 12.12.09] Регистрация: Sep 2009
Сообщений: 231
|
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)) { ... } Еще пример для более широкой задачи 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)) { ... } Последний раз редактировалось bicubic_bublic; 06.11.2009 в 14:36. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|