this is from Adobe docs:Array.filter pour tester dynamiquement les valeurs
package {
import flash.display.Sprite;
public class Array_filter extends Sprite {
public function Array_filter() {
var employees:Array = new Array();
employees.push({name:"Employee 1", manager:false});
employees.push({name:"Employee 2", manager:true});
employees.push({name:"Employee 3", manager:false});
trace("Employees:");
employees.forEach(traceEmployee);
var managers:Array = employees.filter(isManager);
trace("Managers:");
managers.forEach(traceEmployee);
}
private function isManager(element:*, index:int, arr:Array):Boolean {
return (element.manager == true);
}
private function traceEmployee(element:*, index:int, arr:Array):void {
trace("\t" + element.name + ((element.manager) ? " (manager)" : ""));
}
}
}
Le problème est le procédé de filtrage de la classe Array. Cela fonctionne de cette façon: vous passez une fonction en tant qu'argument de filtre et un tableau est renvoyé en fonction de la fonction que vous transmettez. Le problème est qu'il semble que vous ne pouvez pas ajouter d'autres paramètres. Donc, si vous devez créer (par exemple à l'intérieur d'une boucle for) 4 tableaux du même tableau et que vous voulez utiliser la même fonction, vous ne pouvez tester que sur une propriété de la classe que vous avez précédemment définie sur la valeur que vous voulez tester .
Existe-t-il un autre moyen d'ajouter ce paramètre?
Salut Glenn, et merci. Avons-nous des délégués dans AS3 aussi? Je n'ai pas pu les trouver ... –
Les délégués ne font pas partie du langage AS3 en tant que classe native. Vous devez rouler le vôtre (ou trouver un échantillon en ligne). Faites juste une classe avec une fonction "create" statique qui retourne une autre fonction. Et la classe peut garder une trace de vos paramètres supplémentaires. – Glenn
Salut Glenn, je pensais que peut-être cela peut être utile Function.apply –