If you have an Array and you want to get rid of duplicates from the array, here is a little function you can use to achieve the same.
[xml]
private function removeDuplicates(arr:Array):Array
{
var currentValue:String = "";
var tempArray:Array = new Array();
arr.sort(Array.CASEINSENSITIVE);
arr.forEach(
function(item:*, index:uint, array:Array):void {
if (currentValue != item) {
tempArray.push(item);
currentValue= item;
}
}
);
return tempArray.sort(Array.CASEINSENSITIVE);
}[/xml]
Basically, all its doing is making use of the forEach function built in Flex that runs a custom function for every item in the Array. This function then sorts the data alphabetically, checks each value with the previous value and if they are not same, adds the unique element to the new tempArray and thats what gets returned.
Might be useful for some I guess!
var arr:Array = [1,3,2,22,1,4,5,6,4,3,5,6,2,3,4,1,4,6,4,10,3,10,”a”,”a”];
trace( arr.filter(function(e:*, i:int, a:Array):Boolean {return a.indexOf(e) == i;}) );
Its exactly what i m googling for.
Thanks a lot
I’ve just trashed my filter class after seen your function… simple and effective!
Thanks for sharing!
Excelent. Thank’s
Anuj, this seems like it could work, but did not happen to work for me. Is there a way to specify which data element in the array to sort on, for instance, an ID?
This function assumes an array with plain strings. To do anything more complicated, you would have to modify the code.