Recherche JS Objet de Valeur
Dire que j'ai un objet:
userInfo
Et je recherche à chaque nœud de userInfo pour voir si la clé 'nom d'utilisateur' a une valeur égale à toto.
userInfo[x].username == "foo"
Est-il une meilleure façon de faire les choses suivantes?
var matchFound = false;
for (var i = 0, len = userInfo.length; i < len; i++)
matchFound = userInfo[i].username == "foo";
Cela ne fonctionnera pas. La valeur de matchFound est constamment écrasé.
Aussi, quel est le point de la
techniquement, vous êtes en vélo à travers les
J'ai corrigé ça. J'ai juste jeté cet exemple très rapide. La question est plus sur la façon de rechercher l'objet et si il ya une meilleure façon.
Aussi, quel est le point de la
? true : false
partie? userInfo[i].username == "foo"
déjà évalue à true ou false.techniquement, vous êtes en vélo à travers les
Array
avec Objects
à l'intérieur. Il n'y a pas beaucoup de mieux façons de le faire. @gea, je suppose qu'il nous montre le pseudo-code.J'ai corrigé ça. J'ai juste jeté cet exemple très rapide. La question est plus sur la façon de rechercher l'objet et si il ya une meilleure façon.
OriginalL'auteur doremi | 2011-09-27
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas vraiment mieux (plus efficace) sans introduire une autre structure de données. La réponse dépend vraiment de ton utilisation, mais vous pourriez faire quelques choses différentes:
Créer des 'indices' a l'aide des tables de hachage. Ces structures seraient carte de clés pour les articles ou l'indice dans le tableau source. Les objets JavaScript/hachages de soutien fondés sur les clés de recherche et doit être efficace.
Vous aurez à mettre dans un peu plus de travail afin de maintenir la cohérence entre l'index et le tableau source. C'est probablement le meilleur, pour envelopper à la fois dans un autre objet de gérer le contenu des deux. Cette approche est bien si il y a plusieurs champs que vous souhaitez rechercher des objets par.
Si vous ne se soucient pas de l'ordre de la collection, vous pouvez simplement modifier le tout pour une valeur de hachage et index par nom d'utilisateur
Une chose à penser, cependant, est de savoir si les gains d'efficacité sont en passe de l'emporter sur l'augmentation de la complexité du code de la maintenance des index. Si vous n'avez pas à faire beaucoup de recherches et vous n'avez pas des tonnes d'éléments dans le userinfo collection peut-être plus logique de simplement écrire un général d'utiliser la fonction de recherche ou utiliser une bibliothèque comme ce que Philippe Schweiger a mentionner.
OriginalL'auteur Peter Rebholz
Pas besoin pour l'opérateur ternaire, considérez les points suivants:
OriginalL'auteur Kevin Bowersox
Le trait de soulignement bibliothèque JS a un peu de pratique aux méthodes de travail avec des collections de données - par exemple, la sélectionnez la méthode de
La mise en œuvre de il voudrait comme ceci:
Trait de soulignement n'est pas très grand, et tandis que vous pouvez le faire en JS natif de trop, je pense qu'il fait un bon travail de mettre en œuvre les solutions qui vous serait venu à l'esprit sur votre propre. Fondamentalement, il vous donne beaucoup de le JS les caractéristiques que vous devriez penser devrait être là de toute façon.
OriginalL'auteur Philip Schweiger