Class de librairie de fonction sur les arrays, inspirée de php

Soyez le premier à donner votre avis sur cette source.

Vue 9 537 fois - Téléchargée 565 fois

Description

// CLASS 2006 /////////
// Arr
// 0.0.3
// HopemultiMedias.com
///////////////////////

/**
  • Toutes les fonctions ici, ont leurs noms venant de la version PHP, à l'exception de "move()" n'existant pas en PHP.
  • Toutes acceptant le même nombre et le même type de paramètre que leurs consoeurs PHP, à l'exception de "rand()".
  • */


// Retourne la position du pointeur du tableau passé, ou null.
public static function pos ( a :Array ) :Number

// Reinitie la position du pointeur du tableau à 0. Crée le pointeur si nécessaire.
public static function reset ( a :Array ) :Object

// Renvoie l'élément actuel indiqué par le pointeur interne du tableau.
// Si le pointeur n'existe pas encore, en créer un par appel à "reset()" et renvoie donc l'élément 0.
public static function current ( a :Array ) :Object

// Déplace le pointeur interne du tableau jusqu'au dernier élément et retourne sa valeur.
// Si le pointeur n'existe pas encore, en créer un par appel à "reset()".
public static function end ( a :Array ) :Object

// Recule le pointeur et retourne le nouvel élément indiquer par le pointeur ou NULL s'il n'y a plus d'éléments.
// Si le pointeur n'existe pas encore, renvoie NULL sans en créer.
public static function prev ( a :Array ) :Object

// Avance le pointeur et retourne le nouvel élément indiquer par le pointeur ou NULL s'il n'y a plus d'éléments.
// Si le pointeur n'existe pas encore, renvoie NULL sans en créer.
public static function next ( a :Array ) :Object

// Déplace le pointeur sur la nouvel position passée et en retourne l'élément, SI, la nouvel position
// du pointeur est bien un entier supérieur à 0 et inférieur à la longeur du tableau . Sinon échoue et renvoie NULL.
public static function move ( a :Array, nPos :Number ) :Object

// Retourne l'array passée, en array contenant des "lignes" object paramètrer selon la liste de nom des arguments passés.
public static function list ( a :Array, _argus_ ) :Array

// Mélange l'array passée et la retourne
public static function shuffle ( a :Array ) :Array

// Retourne un objet dont le nom des variables sont les éléments de l'array "a" avec pour valeur,
public static function combine ( a :Array, b :Array ) :Object

// Retourne une copie de l'array passée, composée de sous-array de la longeur passée.
public static function chunk ( a :Array, nLength :Number ) :Array

// Retourne un "object" contenant le nombre de fois que se répéte les éléments de l'array passée.
public static function countVal ( a :Array ) :Object

// Renvoie une array des éléments ne figurant que dans "a" OU que dans "b".
public static function diff ( a :Array, b :Array ) :Array

// Retourne une array des éléments figurants dans "a" et dans "b".
public static function intersect ( a :Array, b :Array ) :Array

// Retourne la somme de tous les éléments de l'array passée.
public static function sum ( a :Array ) :Number

// Renvoie le fruit de la multiplication de tous les éléments entre eux.
public static function product ( a :Array ) :Number

// Applique la fonction passée sur chaque élément de l'array passée.
public static function walk ( a :Array, fCallback :Function, _argus_ ) :Void

// Contrairement à la version PHP renvoyant une Array d'indice, cette version retourne
// une array d'éléments, de la longeur passée, choisis au hazard du tableau passé.
public static function rand ( a :Array, nLength :Number ) :Array

// Retourne une copie de l'array passée, nettoyée de tous ses doublons.
public static function unique ( a :Array ) :Array

// Indique si l'array passée contient l'élément passé.
public static function has ( a :Array, oItem ) :Boolean

Source / Exemple :


Code du Fla joint :
	

	import hope.core.Arr ;
	

	myNums = new Array ('uno','dos','tres','cuatro','cinqo','seis','siete') ;
	Arr.reset(myNums) ;
	num = Arr.end(myNums) ;
	while ( num ) { trace(">"+num) ; num=Arr.prev(myNums) } ;
	// Affiche : >siete > seis >cinqo >cuatro >tres >dos >uno
	

	i = 10 ;
	while ( (i-=3)>-3 ) { num=Arr.move(myNums,i) ; trace(">"+num) } ;
	// Affiche : >null >cinqo >dos >null
		

	users = new Array ( "Jean",30,"Paris","sans emploi",
			    true,"Alex",45,"Mans", "boulanger",false,
			    "Paul",25,"Lyon","ouvrier",true,"Anne",
			    43,"Laval","PDG",false ) ;
	list = Arr.list( users, "name",null,"city","job",null ) ;
	line = Arr.reset(list) ;
	while ( line ) {
		trace ( ">"+line.name+","+line.city+","+line.job ) ;
		line = Arr.next(list) ;
	} // Affiche : >Jean,Paris,sans emploi >Alex,Mans,boulanger >Paul,Lyon,ouvrier >Anne,Laval,PDG
	
	
	panier = [] ; boule=0 ; while( ++boule<50 ) panier.push(boule) ;
	Arr.shuffle(panier) ; tirage = panier.splice(0,6) ; trace(">"+tirage) ; // Affiche un tirage de loto !!!
	panier = panier.concat(tirage) ; // On remet les boules !
	trace ( ">"+Arr.rand(panier,6) ) ; // Affiche un nouveau tirage !!!
	trace ( ">"+(Arr.rand(panier,100)).length ) ; // Affiche : >49, puisque "panier" n'a que 49 éléments
	
	
	trace ( "Arr.combine() :" ) ;
	titles = myNums.concat() ;
	values = new Array (1,2,null,4,5,6) ;
	TRAD = Arr.combine(titles,values) ;
	for ( i in TRAD ) trace ( ">"+i+" est "+TRAD[i] ) ;
	// Affiche : >siete est undefined >seis est 6 >cinqo est 5 >cuatro est 4 >tres est null >dos est 2 >uno est 1

	myMap = ['a','b','c','d','f','g','h','i','j'] ;
	a2D = Arr.chunk(myMap,4) ;
	i = -1 ; while ( ++i < a2D.length ) trace ( ">"+a2D[i] ) ;// Affiche : >a,b,c,d >f,g,h,i >j
	
	
	values = ["a",4,1,"a",8,5,"a","b",5,"a"] ;
	myCount= Arr.countVal(values) ;
	for ( i in myCount ) trace ( ">"+i+":"+myCount[i]+" fois" ) ; 
	// Affiche : >b:1 fois >5:2 fois >8:1 fois >1:1 fois >4:1 fois >a:4 fois
	
	
	mapA = ['Madrid','Lyon','Rome','Berlin','NewYork'] ;
	mapB = ['Paris','Madrid','Londres','Paris','NewYork','Rome'] ;
	trace ( ">"+Arr.diff(mapA,mapB) ) ; // Affiche : >Lyon,Berlin,Paris,Londres;
	trace ( ">"+Arr.intersect(mapA,mapB) ) ; // Affiche : >Madrid,Rome,NewYork
	
	
	values = [1,2,5,10] ;
	trace ( ">"+Arr.product(values) ) ; // Affiche : >100
	trace ( ">"+Arr.sum(values) ) ; // Affiche : >18;
	
	
	function cutCity ( ITEM, i, n ) { return ITEM.substr(i,n).toUpperCase() ; }
	Arr.walk(mapB,cutCity,0,3) ; trace(">"+mapB) ; // Affiche : >PAR,MAD,LON,PAR,NEW,ROM
	
	
	users = ['PAUL','paul','Céline','Alex','Céline','PAUL','Ana'] ;
	trace(">"+Arr.unique(users) ) ; // Affiche : >paul,Alex,Ana
	trace(">"+Arr.has(users,'Ana') ) ; // Affiche : >true
	trace(">"+Arr.has(users,'cÉliNe') ) ; // Affiche : >false

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

SuperDevy
Messages postés
842
Date d'inscription
dimanche 24 novembre 2002
Statut
Membre
Dernière intervention
2 juillet 2007
-
Super pratique !

Juste une petite suggestion d'optimisation : évite de mettre array.lenght dans les boucles, les fonctions "unique" et "has" sont bien conçues, mais il faudrait faire la même chose pour "sum" et "product" ...
120120
Messages postés
5
Date d'inscription
lundi 28 mars 2005
Statut
Membre
Dernière intervention
6 janvier 2010
-
Merci beaucoup pour cette superbe classe :)) Elle ma permit de gagner vraiment beaucoup de temps :))

Super bon boulot :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.