![]() |
|
||||||||||
|
|||||
|
[+2 20.11.06]
[+2 23.11.06] Регистрация: Oct 2006
Сообщений: 92
|
var myArray :ArrayCollection = new ArrayCollection
([{name:"field1",dat:"AZ"},{name:"field2",dat:"MA"},{name:"field3",dat:"MZ"}]);
var dt:Object = {name:"field1", dat:"AZ"};
trace(myArray.getItemIndex({name:"field2", dat:"MA"}));// -1
trace(myArray.getItemIndex(dt));// -1
trace(myArray.getItemAt(0) == {name:"field1",dat:"AZ"});//false
trace(myArray.getItemAt(0) == dt);//false
![]() Последний раз редактировалось Aleksey123; 13.11.2006 в 22:00. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Потому что это разные объекты.
|
|
|||||
|
[+2 20.11.06]
[+2 23.11.06] Регистрация: Oct 2006
Сообщений: 92
|
Офигенно. Что значит разные? поподробнее можно? А кто-нибудь может исправить код?
Последний раз редактировалось Aleksey123; 13.11.2006 в 20:21. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А что ты хочешь сделать?
|
|
|||||
|
[+2 20.11.06]
[+2 23.11.06] Регистрация: Oct 2006
Сообщений: 92
|
Хочу узнать номер строки таблицы если мне известно содержимое ячейки.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Нужно рыть весь массив и проверять соответствие всех свойств простого типа.
getItemIndex возвращает индекс элемента в коллекции, а параметром является ссылка конкретно на этот элемент, а не на другой созданный. |
|
|||||
|
[+2 20.11.06]
[+2 23.11.06] Регистрация: Oct 2006
Сообщений: 92
|
Можешь написать маленький примерчик где используется ссылка на элемент в коллекции использую getItemIndex?
![]() |
|
|||||
|
[+2 20.11.06]
[+2 23.11.06] Регистрация: Oct 2006
Сообщений: 92
|
public var myArray=new ArrayCollection
([{name:"field1",dat:"AZ"},{name:"field2",dat:"MA"},{name:"field3",dat:"MZ"}]);
public var myCursor:IViewCursor;
myCursor=myArray.createCursor();
for(var i:int=0;i<myArray.length;i++){
if(myCursor.current.name=="field2")
trace("FOUND");
if(myCursor.current.name==dt.name && myCursor.current.dat==dt.dat)//Можно как-нибудь проще записать?
trace("FOUND2");
myCursor.moveNext();
}
// if(myCursor.current==dt) не работает!
Последний раз редактировалось Aleksey123; 14.11.2006 в 11:59. |
|
|||||
|
getItemIndex возвращает индекс конкренного ЭКЗЕМПЛЯРА твоего объекта.
var a:Object = { par1 : 1, par2 : 2}
var b:Object = { par1 : 1, par2 : 2}
var linkToA: Object = a;
trace(a==b) //false
trace(a==linkToA) // true
потому что a и b хранят ссылки на ячейки памяти с данными, а не сами данные. Со стороны кажеться что у a и b одинаковые данные, но они храняться в разных ячейках памяти. При их сравнении сравниваеться не данные на которые они ссылаються а именно адреса этих ячеек памяти. a==linkToA - true потому что мы linkToA присвоили значение адреса ячейки памяти. Если бы ты програмил на Assembler, C/C++, Pascal на худой конец, для DOS то было бы легче с этип разобраться - там "осязаемые" ячейки памяти. В As3 тоже самое, только эти ячейки не такие очевидные. Поэтому ты не можешь просто получить индекс элемента зная его данные, ты должен знать именно "ссылку" на этот элемент. Для твоего случая __etc все верно описал.
__________________
33 коровы |
|
|||||
|
[+2 20.11.06]
[+2 23.11.06] Регистрация: Oct 2006
Сообщений: 92
|
Тогда вот такой код получается:
var myArray :ArrayCollection = new ArrayCollection
([{name:"field1",dat:"AZ"},{name:"field2",dat:"MA"},{name:"field3",dat:"MZ"}]);
var dt:Object = {name:"field1", dat:"AZ"};
var linkdt:Object=myArray[1];
trace(myArray.getItemIndex({name:"field2", dat:"MA"}));// -1
trace(myArray.getItemIndex(dt));// -1
trace(myArray.getItemAt(0) == {name:"field1",dat:"AZ"});//false
trace(myArray.getItemAt(0) == dt);//false
trace(myArray.getItemAt(1) == linkdt);//true
И еще. Если у меня 10 полей в таблице или больше мне каждый раз писать Или можно проще сделать? Последний раз редактировалось Aleksey123; 15.11.2006 в 01:00. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:31. |
|
|
« Предыдущая тема | Следующая тема » |
|
|