使用.splice从数组中删除项目

时间:2011-08-10 11:36:04

标签: flash actionscript-3

我正在尝试从数组中删除项目,但它不能像它应该的那样工作。 这是我的代码:

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 个答案:

答案 0 :(得分:1)

尝试使用:

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);
    }
}

答案 1 :(得分:1)

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
    }
}