/** * @Author: Igarmendia * @Author: Diego Ponce de Leon * @Date: Enero 2008 */ package net.xinterface.utils { import flash.utils.ByteArray; public class ArrayUtils { public function ArrayUtils() { } /** Clona un array */ static public function Clone(array:Array):Array { var i:int; var l:int; var returned:Array; returned = new Array; l = array.length; for(i = 0; i < l; i++) { returned[i] = array[i]; } return returned; } /** Pop recursivo: elmina un objeto de un array. El array se ajusta al nuevo tamaño evitando huecos vacios */ static public function Pop(array:Array,object:Object):void { if(array.length==1 || array[array.length-1]==object) { array.pop(); } else { ArrayUtils.InternalPop(array,object); } } static public function InternalPop(array:Array,object:Object):void { var aux:Object; if(array.length!=0) { aux = array.pop(); if(array[array.length-1]==object) { array.pop(); } InternalPop(array,object); array.push(aux); } } /** Borra duplicados de un array */ static public function DeleteDuplicated(array:Array):Array { var result:Array; result = new Array; array.forEach ( function(item:*, index:int, arr:Array):void { if(result.indexOf(item) == -1) { result.push(item); } } ); return result; } /** Mueve un elemento de un array desde un índice a otro */ static public function MoveIndex(pArray:Array, pIndex:int, pNewPosition:int):void { if(pIndex == pNewPosition) { throw new Error("MoveIndex: los indices deben ser diferentes"); return; } var affected:Array; var toMove:Array; if(pIndex < pNewPosition) { affected = pArray.splice(pNewPosition, 1); toMove = pArray.splice(pIndex, 1); }else { toMove = pArray.splice(pIndex, 1); affected = pArray.splice(pNewPosition, 1); } pArray.splice(pIndex, 0, affected[0]); pArray.splice(pNewPosition, 0, toMove[0]); } } }