Поиск объекта в массиве (AS3) - PullRequest
1 голос
/ 17 января 2012

Итак, вот что я пытаюсь сделать в псевдокоде:

array = new Array();
thisObj = new objectTypeOne();
thisObj2 = new objectTypeTwo();
array.push(thisObj);
array.push(thisObj2);

for( i=0; i<=array.length, i++)
{ 
  if( array[i] == objectTypeOne() )
  {
    //do code
  }
 }

Я знаю, что у меня может быть два разных массива для каждого типа объекта, но это разрушит большую часть моего другого кода, который предполагает, что они 'оба в одном массиве.(это практически один и тот же объект с небольшими, но существенными различиями, я полагаю, мне действительно нужно, чтобы objectTypeTwo был производным от другого, но на данный момент это не имеет значения).

Ответы [ 2 ]

1 голос
/ 17 января 2012

Сначала исправьте это i<=array.length до i<array.length. Вот причина ошибки «термин не определен».

Решение, предложенное @Ascension Systems, можно использовать при создании экземпляра различных классов, например

array = new Array();
thisObj = new Student();
thisObj2 = new Employee();
array.push(thisObj);
array.push(thisObj2);

тогда вы можете проверить как

for( i=0; i<array.length, i++)
{ 
  if( array[i] is Student )
  {
    //do code
  }else if(array[i] is Employee){

  }
}

Если вы используете пользовательские объекты, сделайте вот так

array = new Array();
thisObj = new Object();
thisObj.type = "type1";
....
....
thisObj2 = new Object();
thisObj2.type = "type2";
...
...
array.push(thisObj);
array.push(thisObj2);

for( i=0; i<array.length, i++)
{ 
  if( array[i].type == "type1" )
  {
    //do code
  }else if( array[i].type == "type2"){

  }
}
1 голос
/ 17 января 2012

Я считаю, что вы ищете:

if(array[i] is MyObjectType) {
   //I found an instance of MyObjectType
}

Оператор " is " выполняет анализ типов во время выполнения и возвращает true, если объект, который вы тестируете (в данном примере, array[i]), имеет либо тип, который вы сравниваете, либо подкласс (в этом примере MyObjectType). Вы можете также захотеть исследовать, используя typeof . Однако старайтесь избегать ТОНА подобных вызовов или вызовов с использованием «typeof» ... поиск информации о типе во время выполнения обходится дорого на любом языке.

...