Removing children

I am making a simple, playing-card-flipping animation. When I began I didn’t know how to create a number of card instances based on the number of cards I wanted in the deck, so I just reinstantiated the Card class to same variable (named card) each time a card was clicked. I figured the previous card would disappear since it is no longer assigned to a variable, but it didn’t. I didn’t understand it, but it was what I wanted. Now I need to find a way to remove all those children, but since the variable “card” only refers to the last created card, I am lost. I thought of a couple ways to get around it, but I also think this is a good learning opportunity. Here is what I figure to be the important code:

[as]
function newCard(event:MouseEvent):void {
if (clickOK==true&&orderMade==true&&finished==false) {
clickOK=false;
card.setOutcome(cardOrder[cardIndex]);
if (cardIndex!=0) {
setChildIndex(card, numChildren-1);
}
card.cardClick();
cardIndex++;
if (cardIndex<numCards) {
card=new Card ;
addChildAt(card,0);
card.addEventListener(MouseEvent.CLICK,newCard);
} else {
finished=true;
card.finished();
}
}
}
[/as]

  1. Is there a way to use remove child on the previous cards?
  2. If I were to redo the deck construction elements, how would I create a number of Card instances based on an inputted number of card in the deck? My unresearched hunch right now is to put objects into an array, but can array indexes be treated like objects? For instance, myArray[0]=new MovieClip; addChild(myArray[0]), and is the best way to do it?
  3. For advancing my knowledge only, why do previous instances of the display object stay on the display list after the variable they were instantiated to are reassigned? Wouldn’t they just be garbage collected or something?