underscore.js - Déterminer si toutes les valeurs dans un tableau de tableaux de correspondance
J'ai un tableau de tableaux, qui ressemble à quelque chose comme ceci:
[["Some string", "Some other string"],["Some third string", "some fourth string"]]
Je pense que je peux utiliser le _.all
méthode dans Trait de soulignement pour déterminer si tous les tableaux de match de 100% (c'est l'ensemble de leurs valeurs match), mais je ne suis pas sûr de savoir comment écrire le nécessaire itérateur pour effectuer la vérification.
Quelqu'un a une idée?
OriginalL'auteur Kevin Whitaker | 2012-04-11
Vous devez vous connecter pour publier un commentaire.
Essayer ce gars-là (de l'ordre indépendant):
C'est en supposant que vous voulez tous les tableaux contiennent les mêmes éléments
dans le même ordrecomme l'un de l'autre (ainsi, par votre exemple d'entrée de la fonction doit retournerfalse
)._.difference
vérifie seulement si les valeurs du premier tableau ne sont pas présents dans le second tableau; des valeurs supplémentaires dans le second tableau, ne sont pas détectés, si vraiment vous voulez vous assurer que les deux tableaux sont les mêmes que vous devriez faire_.difference(array, arrays[0]).length == 0 && _.difference(array[0], arrays).length == 0
OriginalL'auteur Dan Tao
Pourquoi pas d'intersection? (si vous voulez vraiment utiliser certains Soulignent des fonctions de cette dernière)
http://underscorejs.org/#intersection
Si les tableaux sont de la même longueur, et la longueur de l'intersection est égale à la longueur des tableaux, puis ils contiennent tous les mêmes valeurs.
OriginalL'auteur peterfoldi
Ma préférence:
Et si l'ordre des questions:
OriginalL'auteur paulmelnikow
Utilisation trait de soulignement pour déterminer la différence entre les deux, et vérifier la longueur du tableau. Un moyen facile de le faire serait:
Ce sera le retour de
true
si elles sont les mêmes etfalse
si ils ne le sont pas.Bien repéré. Stackoverflow supprime les caractères de soulignement dans les commentaires pour une raison quelconque
OriginalL'auteur Craig Myles
OriginalL'auteur Ron
Si vous voulez vérifier que les éléments sont les mêmes et dans le même ordre, je voudrais aller avec:
Même plus proprement en coffeescript:
return _.union(x).length == 1;
pour un nombre arbitraire de tableaux de comparaison.Lorsque l'ordre des questions, vous pouvez simplement utiliser
_.isEqual
.OriginalL'auteur jazmit
Ma mise en œuvre avec http://underscorejs.org/
OriginalL'auteur klodoma
Si vous n'avez pas besoin de savoir qui éléments sont inégales, l'utilisation de transitivité:
OriginalL'auteur chbrown
Je ne peux pas commenter sur Dan Tao réponse, petit changement pour ignorer la vérification du premier tableau à l'encontre de lui-même (inutile _.différence d'appel)
à l'époque où j'ai écrit ce commentaire, j'ai été travailler sur de gros et de désordre web app, avec divers magasins/modèles etc.. il y avait des tableaux autour de la pose représentant les mêmes données (id, etc), certains tableaux sont des copies, des références et nous avons vérifier la présence de différences. Parfois, nous aimerions vérifier même les tableaux les uns contre les autres (dans le cas où ils ont été les références), cette case ici seulement d'optimiser ce cas:
a = [1, ... x]; b = a; allArraysAlike([a, b])
il semble que le "tous" est désormais obsolète
OriginalL'auteur cotko