2009-02-06 5 views
0

Quel serait un algorithme agréable pour enlever un tableau sur dupes comme ci-dessous ...la suppression des doublons de tableau 2D en Javascript

var allwords = [ 

    ['3-hidroxitiramina', '3-hidroxitiramina'], 

    ['3-hidroxitiramina', '3-hidroxitiramina'], 

    ['3-in-1 block', 'bloqueo 3 en 1'], 

    ['abacterial', 'abacteriano'], 

    ['abacteriano', 'abacteriano'], 

    ['abciximab', 'abciximab'], 

... 

Juste pour clarifier les choses, je voudrais un des

['3-hidroxitiramina', '3-hidroxitiramina'], 

à enlever, donc il n'y a qu'un seul

+0

Selon aux réponses données, ce n'est pas assez clair. Je suppose que vous voulez supprimer les doublons dans la première dimension de sorte qu'il n'y a qu'un "['3-hidroxitiramina', '3-hidroxitiramina']" dans le tableau gauche, non? – Gumbo

Répondre

0

[modifier]: erreur de lecture, après avoir lu ces précisions, je vous suggère:

var i = allwords.length-1, prev=''; 
do { 
    if (allwords[i].join('/') === prev) { 
     allwords.splice(i,1); 
    } 
    prev = allwords[i].join('/'); 
} while (i-- && i>-1); 

(inversion de la boucle est une étape d'optimisation)

+0

Cela semble faire l'affaire, merci :) – qui

0

vous pouvez utiliser un objet comme un tableau associatif/hachage (Si vous voulez dire dups dans la première dimension)

var allWordsObj = {}; 
for(var i = 0; i < allWords.length; i++) { 
    allWordsObj[allWords[i][0]] = allWords[i][1]; 
} 

alert(allWordsObj['3-hidroxitiramina']); 
+0

Je ne sais pas, mais merci – qui

0

Essayez ceci:

var len = allwords.length, i, j, first; 
for (i=0; i<len-1; i++) { 
    first = allwords[i].toString(); 
    for (j=i+1; j<len; j++) { 
     if (first === allwords[j].toString()) { 
      allwords.splice(j, 1); 
      len--; 
     } 
    } 
} 
Questions connexes