2010-08-09 5 views
-1

J'ai une chaîne avec aucun espaces avec ',' et les entrées en double. Pourquoi jQuery ne supprime pas cela?
var arr = $.unique(data.split(','));

+0

Veuillez fournir un exemple de code complet et utiliser un langage professionnel. –

+0

Lol? Je l'ai posté. J'ai une chaîne comme var data = "omg, lol, omg". – UnstableFractal

Répondre

2

Je pense que vous n'utilisez pas la bonne fonction pour cela.

De l'jQuery documentation on $.unique:

Notez que cela ne fonctionne que sur les tableaux d'éléments DOM, et non des chaînes ou des nombres.

This SO question contient des approches pour une solution générique array_unique.

0

dit Console:

> var data = "omg,lol,omg"; 
> $.unique(data.split(",")) 
["lol", "omg"] 

Cependant, il est peu fiable, car il est destiné à être utilisé avec des noeuds DOM. La fonction de tri utilisée est utilisée pour comparer les nœuds DOM et est spécifique au navigateur. Si vous souhaitez dédupliquer un tableau de chaînes, l'algorithme utilisé par jQuery.unique peut être réutilisé. Triez le tableau et supprimez tous les éléments correspondants consécutifs.

function removeDuplicates(array) { 
    array.sort(); 
    for(var i = 1; i < array.length; i++) { 
     if(array[i] == array[i-1]) { 
      array.splice(i--, 1); 
     } 
    } 
    return array; 
} 
1

$.unique() n'est pas assurée de travailler sur des tableaux de chaînes, il a un but précis, check the API:

Cette fonction ne fonctionne que sur les tableaux JavaScript simples d'éléments DOM, et est principalement utilisé en interne par jQuery.

+0

Existe-t-il un moyen de supprimer les doublons au lieu d'écrire sa propre fonction? – UnstableFractal

+0

@smsteel - jQuery n'a pas de fonction intégrée pour ce non ... ce n'est pas vraiment son but, mais une fonction n'est pas difficile à écrire, voir la question que Pekka a reliée dans sa réponse. –