2013-12-13 32 views

回答

0
var a:Array = ["Tom", "John", "Susan", "Marie", "Tom", "John", "Tom", "Eva"]; 
a.sort(); 
var i:int = 0; 
while(i < a.length) { 
    while(i < a.length+1 && a[i] == a[i+1]) { 
     a.splice(i, 1); 
    } 
    i++; 
} 

如可以是看到here

+0

感謝這個選項 –

0

試着這麼做:

 var array:Array = [1,1,2,2,4,5]; 
    trace(array); 
    trace(removeDuplicates(array)); 

    function removeDuplicates(inArray:Array):Array 
    { 
     return inArray.filter(removeDuplicatesFilter); 
    } 

    function removeDuplicatesFilter(e:*, i:int, inArray:Array):Boolean 
    { 
     return (i == 0) ? true : inArray.lastIndexOf(e, i - 1) == -1; 
    } 

另外,我建議你創建一個類,並實現這些靜態方法類似。

 public class ArrayUtils 
    { 
      public static function removeDuplicates(inArray:Array):Array 
      { 
       return inArray.filter(_removeDuplicatesFilter); 
      } 

      protected static function _removeDuplicatesFilter(e:*, i:int, inArray:Array):Boolean 
      { 
      return (i == 0) ? true : inArray.lastIndexOf(e, i - 1) == -1; 
      } 
     } 

而且使用像:

 var array:Array = [1,1,2,2,4,5]; 
     trace(ArrayUtils.removeDuplicates(array)); 
+0

感謝這看起來簡潔而不使用任何字典類。 –

+0

@ashok_khuman你非常歡迎!希望有可能以某種方式幫助。 – gabriel

3

另一種選擇是使用散列圖/ Dictionary像這樣:

import flash.utils.Dictionary; 

var a:Array = ["Tom", "John", "Susan", "Marie", "Tom", "John", "Tom", "Eva"]; 
var b:Dictionary = new Dictionary(true);//has map/cannot have duplicate keys 
var c:Array = [];//filtered/unique entries array 
for(var i:int = 0; i < a.length; i++) b[a[i]] = i;//hash array entries 
for(var key:String in b) c.push(key);//put them back into an array 
b = null;//clear/release the hash map 

trace(c);//traces: Tom Eva John Susan Marie 
+0

感謝您使用Dictionary類的建議。 –

0
private function removeDuplicatesInCollection(collection:ArrayCollection):Array{ 
     var dic:Dictionary = new Dictionary(); 

     for each (var item:MyObject in collection){ 
      var key: Object = new Object(); 
      key.network = item.network; 
      key.day = item.day; 
      key.date = item.date; 
      key.time =item.time; 
      key.cost = item.cost; 

      dic[JSON.stringify(key)] = item ; 
     } 

     return DictionaryUtil.getValues(dic) ; 
    }