PDA

Просмотр полной версии : Помогите с массивом объектов.


Failure
27.12.2009, 01:26
Значит так. Есть массив объектов.
Идёт по порядку 0 -> n-1
Нужно пробежать по нему циклом и удалить те объекты которые не соответствуют условию.

как делаю:

while (i<n) {
if (condition) {
array.slice(i,1);
}
}

когда в массиве 1 объект то всё проходит нормально,
если объектов больше то удаляется нормально только если первым условие прошёл последний созданный объект.

помогите. нужно сохранить порядок массива вырезав из него элемент.

Добавлено через 31 секунду
забыл добавить. всё это на as3

Добавлено через 3 минуты
увидел, что слайс не изменяет массив, но
array=array.slice(n,1)
тоже не работает. точнее не так как надо.

udaaff
27.12.2009, 01:30
Воспользуйтесь методом Array#filter()

Failure
27.12.2009, 01:41
function deleteArrayItem(ar:Array,n:int) {
i=n+1
while(i<ar.length)
{
ar[i-1]=ar[i];
i++
}
ar.length--;
}
вот. может кому пригодиться:)

udaaff
27.12.2009, 02:03
Зачем что-то изобретать, если есть встроенный метод, который, очевидно, будет работать быстрее:
var array:Array = [ 3, 5, 23, 2, 34, 2 ];
array = array.filter(filter); // удаляем все элементы со значением 2
trace(array);

function filter(item:*, index:int, array:Array):Boolean
{
return item != 2;
}