1
2
9
10
13 class com.sekati.utils.ArrayUtils {
14
15
22 public static function insert(a:Array, objElement:Object, nIndex:Number):Array {
23 var aA:Array = a.slice( 0, nIndex - 1 );
24 var aB:Array = a.slice( nIndex, a.length - 1 );
25 aA.push( objElement );
26 return ArrayUtils.merge( aA, aB );
27 }
28
29
35 public static function remove(a:Array, objElement:Object):Array {
36 for(var i:Number = 0; i < a.length ; i++) {
37 if (a[i] === objElement) {
38 a.splice( i, 1 );
39 }
40 }
41 return a;
42 }
43
44
50 public static function search(a:Array, objElement:Object):Number {
51 for (var i:Number = 0; i < a.length ; i++) {
52 if (a[i] === objElement) {
53 return i;
54 }
55 }
56 return null;
57 }
58
59
64 public static function shuffle(a:Array):Void {
65 for (var i:Number = 0; i < a.length ; i++) {
66 var tmp:Object = a[i];
67 var randomNum:Number = random( a.length );
68 a[i] = a[randomNum];
69 a[randomNum] = tmp;
70 }
71 }
72
73
78 public static function clone(a:Array):Array {
79 return a.concat( );
80 }
81
82
88 public static function merge(aA:Array, aB:Array):Array {
89 var aC:Array = ArrayUtils.clone( aB );
90 for(var i:Number = aA.length - 1; i > -1 ; i--) {
91 aC.unshift( aA[i] );
92 }
93 return aC;
94 }
95
96
97
105 public static function swap(a:Array, nA:Number, nB:Number):Array {
106 if (nA >= a.length || nA < 0) {
107 throw new Error( "@@@ com.sekati.utils.ArrayUtils.swap() Error: Index 'A' (" + nA + ") is not a valid index in the array '" + a.toString( ) + "'." );
108 return a;
109 }
110 if(nB >= a.length || nB < 0) {
111 throw new Error( "@@@ com.sekati.utils.ArrayUtils.swap() Error: Index 'A' (" + nB + ") is not a valid index in the array '" + a.toString( ) + "'." );
112 return a;
113 }
114 var objElement:Object = a[nA];
115 a[nA] = a[nB];
116 a[nB] = objElement;
117 return a;
118 }
119
120
125 public static function asort(a:Array):Array {
126 var aFn:Function = function (element1:String, element2:String):Boolean {
127 return element1.toUpperCase( ) > element2.toUpperCase( );
128 };
129 return a.sort( aFn );
130 }
131
132
137 public static function removeDuplicate(a:Array):Array {
138 a.sort( );
139 var o:Array = new Array( );
140 for (var i:Number = 0; i < a.length ; i++) {
141 if (a[i] != a[i + 1]) {
142 o.push( a[i] );
143 }
144 }
145 return o;
146 }
147
148
154 public static function matchValues(aA:Array, aB:Array):Boolean {
155 for (var f:Number = 0; f < aA.length ; f++) {
156 for (var l:Number = 0; l < aB.length ; l++) {
157 if (aB[l].toLowerCase( ) === aA[f].toLowerCase( )) {
158 return true;
159 }
160 }
161 }
162 return false;
163 }
164
165
171 public static function compare(aA:Array, aB:Array):Boolean {
172 if(aA.length != aB.length) {
173 return false;
174 }
175 for(var i:Number = 0; i < aA.length ; i++) {
176 if(aA[i] !== aB[i]) {
177 return false;
178 }
179 }
180 return true;
181 }
182
183
191 public static function locatePropVal(objArr:Array, prop:String, val:Object, isCaseInsensitive:Boolean):Object {
192 for(var o in objArr) {
193 if (!isCaseInsensitive) {
194 if (objArr[o][prop] == val) return objArr[o];
195 } else {
196 if (objArr[o][prop].toUpperCase( ) == val.toUpperCase( )) return objArr[o];
197 }
198 }
199 return undefined;
200 }
201
202
209 public static function locatePropValIndex(a:Array, prop:String, val:Object):Number {
210 for (var i:Number = 0; i < a.length ; i++) {
211 if(a[i][prop] == val) {
212 return i;
213 }
214 }
215 }
216
217
225 public static function sliceByPropVal(objArr:Array, prop:String, val:Object, isCaseInsensitive:Boolean):Array {
226 var a:Array = new Array( );
227 for(var o in objArr) {
228 if (!isCaseInsensitive) {
229 if (objArr[o][prop] == val) a.push( objArr[o] );
230 } else {
231 if (objArr[o][prop].toUpperCase( ) == val.toUpperCase( )) a.push( objArr[o] );
232 }
233 }
234 return a;
235 }
236
237
242 public static function min(a:Array):Number {
243 var i:Number = a.length;
244 var min:Number = a[0];
245 var idx:Number = 0;
246 while (i-- > 1) {
247 if(a[i] < min) min = a[idx = i];
248 }
249 return idx;
250 }
251
252
257 public static function max(a:Array):Number {
258 var i:Number = a.length;
259 var max:Number = a[0];
260 var idx:Number = 0;
261 while(i-- > 1) {
262 if(a[i] > max) max = a[idx = i];
263 }
264 return idx;
265 }
266
267
272 public static function minVal(a:Array):Number {
273 return ((a.length <= 0) ? 0 : a[ArrayUtils.max( a )]);
274 }
275
276
281 public static function maxVal(a:Array):Number {
282 return ((a[ArrayUtils.max( a )] < 0) ? 0 : a[ArrayUtils.max( a )]);
283 }
284
285 private function ArrayUtils() {
286 }
287 }