удаление элементов из массива с помощью .splice - PullRequest
1 голос
/ 10 августа 2011

Я пытаюсь удалить элементы из массива, но он не работает так, как предполагалось.Вот мой код:

for(var i:uint = 0;i<OrderModel.getInstance().orders.length; i++){
    if (OrderModel.getInstance().orders[i].time == hour){
        OrderModel.getInstance().orders.splice(i, 1);
    }
}

удаляет все элементы, но 1. У меня всегда есть один элемент, который должен быть удален, но это не так.Есть идеи, как это получается?

Ответы [ 2 ]

1 голос
/ 10 августа 2011
for(var i:uint = 0;i<OrderModel.getInstance().orders.length; ){
    if (OrderModel.getInstance().orders[i].time == hour){
        OrderModel.getInstance().orders.splice(i, 1);            
    }
    else 
        i++;
}    

Что, возможно, проще:

for(var i:uint = 0;i<OrderModel.getInstance().orders.length; i++){
    if (OrderModel.getInstance().orders[i].time == hour){
        OrderModel.getInstance().orders.splice(i, 1);
        i--;  // if we remove an item, we move the index back
    }
}
1 голос
/ 10 августа 2011

Попробуйте использовать:

for(var i:int = OrderModel.getInstance().orders.length - 1;i >= 0; i--){
    if (OrderModel.getInstance().orders[i].time == hour){
        OrderModel.getInstance().orders.splice(i, 1);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...