2013-12-13 5 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

Спасибо за предложение использовать класс словаря. –

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) ; 
    } 
Смежные вопросы