2015-07-29 1 views
0

J'ai deux tableaux qui contiennent des objets. Chaque objet a une propriété "id". Si id a la même valeur, il s'agit de doublons. Comment puis-je trouver et supprimer des doublons en faisant correspondre les propriétés?Comment trouver des doublons dans des tableaux?

Maintenant j'utiliser cela, mais parfois il passe à côté et écrit des doublons dans DB

func checkForDupl() { 

     for var i = 0; i < JSONStorage.count; i++ { 

      for var b = 0; b < CDStorage.count; b++ { 

       if JSONStorage[i]!.id == CDStorage[b]!.id { 

        JSONStorage.removeAtIndex(i) 
        if JSONStorage.isEmpty { 
         return 
        } 
       } 
      } 
     } 
    } 
+1

Vous supprimez un élément du tableau, mais vous continuez d'incrémenter __i__, donc pour chaque doublon trouvé, il est possible qu'il en manque un. –

Répondre

0

J'ai modifié votre fonction il ne manque plus de doublons

func checkForDupl() { 
    var i = 0 
    OUTER_LOOP: while i < JSONStorage.count { 
     for j in 0..<CDStorage.count { 
      if JSONStorage[i]!.id == CDStorage[j]!.id { 
       JSONStorage.removeAtIndex(i) 
       continue OUTER_LOOP 
      } 
     } 
     ++i 
    } 
} 

REMARQUE: Cette fonction supprime uniquement les éléments de JSONStorage qui sont présents dans CDStorage. Il ne supprime pas les suppressions

+0

Merci beaucoup! Je n'ai jamais vu de construction OUTER_LOOP auparavant, sur quoi google? Merci encore! –

+0

C'est une étiquette. Lorsque vous utilisez 'continue' ou' break', il existe simplement à partir de la boucle la plus interne. en utilisant 'continuer