package helpers; class ArrayHelper { public static function addUnique (array:Array, value:T):T { var exists = false; for (arrayValue in array) { if (arrayValue == value) { exists = true; break; } } if (!exists) { array.push (value); } return value; } public static function concatUnique (a:Array, b:Array, adjustOrder:Bool = false, key:String = null):Array { if (a == null && b == null) { return new Array (); } else if (a == null && b != null) { return b; } var concat = a.copy (); for (bValue in b) { var hasValue = false; for (aValue in a) { if (key != null) { if (Reflect.field (aValue, key) == Reflect.field (bValue, key)) { if (adjustOrder) { concat.remove (aValue); } else { hasValue = true; } } } else if (aValue == bValue) { hasValue = true; } } if (adjustOrder && hasValue) { concat.remove (bValue); hasValue = false; } if (!hasValue) { concat.push (bValue); } } return concat; } public static function containsValue (array:Array < T > , value:T):Bool { for (arrayValue in array) { if (arrayValue == value) { return true; } } return false; } }