1  /*
     2   Copyright aswing.org, see the LICENCE.txt.
     3  */
     4   
     5  
     6   
     7  /**
     8   *
     9   * @author iiley
    10   */
    11  class org.aswing.utils.ArrayUtils {
    12  	
    13  
    14  	/**
    15  	 * Call the operation by pass each element of the array once.
    16  	 * <p>
    17  	 * for example:
    18  	 * <pre>
    19  	 * //hide all component in vector components
    20  	 * ArrayUtils.each( 
    21  	 *     components,
    22  	 *     function(c:Component){
    23  	 *         c.setVisible(false);
    24  	 *     });
    25  	 * <pre>
    26  	 * @param arr the array for each element will be operated.
    27  	 * @param the operation function for each element
    28  	 * @see Vector#each
    29  	 */
    30  	public static function each(arr:Array, operation:Function):Void{
    31  		for(var i:Number=0; i<arr.length; i++){
    32  			operation(arr[i]);
    33  		}
    34  	}
    35  	
    36  	public static function removeFromArray(arr:Array, obj:Object):Void{
    37  		for(var i:Number=0; i<arr.length; i++){
    38  			if(arr[i] == obj){
    39  				arr.splice(i, 1);
    40  				return;
    41  			}
    42  		}
    43  	}
    44  	
    45  	public static function removeAllFromArray(arr:Array, obj:Object):Void{
    46  		for(var i:Number=0; i<arr.length; i++){
    47  			if(arr[i] == obj){
    48  				arr.splice(i, 1);
    49  				i--;
    50  			}
    51  		}
    52  	}
    53  	
    54  	public static function removeAllBehindSomeIndex(array:Array , index:Number):Void{
    55  		if(index <= 0){
    56  			array.splice(0, array.length);
    57  			return;
    58  		}
    59  		var arrLen:Number = array.length;
    60  		for(var i:Number=index+1 ; i<arrLen ; i++){
    61  			array.pop();
    62  		}
    63  	}	
    64  	
    65  	public static function indexInArray(arr:Array, obj:Object):Number{
    66  		for(var i:Number=0; i<arr.length; i++){
    67  			if(arr[i] == obj){
    68  				return i;
    69  			}
    70  		}
    71  		return -1;
    72  	}
    73  	
    74  	public static function cloneArray(arr:Array):Array{
    75  		return arr.concat();
    76  	}
    77  }
    78