Vérifier si la valeur de l'objet existe dans un tableau Javascript des objets et si ce n'est ajouter un nouvel objet array
Si j'ai le tableau d'objets suivant:
[ { id: 1, username: 'fred' }, { id: 2, username: 'bill' }, { id: 2, username: 'ted' } ]
Est-il un moyen de parcourir le tableau pour vérifier si une valeur de nom d'utilisateur existe déjà et si elle à ne rien faire, mais si ce n'est pas pour ajouter un nouvel objet à la matrice avec ce nom d'utilisateur (et de nouvelles ID)?
Merci!
- Bill et Ted censé avoir le même ID?
- Pourquoi il y a deux éléments avec le même
id
? Est-ce possible que des éléments seront supprimés à partir de ce tableau, ou peut-on être sûr que le nouvel élément sera toujoursid
égal àarr.length + 1
? - Si vous ne voulez pas faire une boucle par elle, cochez cette Q&A pour l'extension de la matrice de prototype, stackoverflow.com/questions/1988349/....
- les fonctions natives sont plus lent par rapport à la normale de boucles et de leur prise en charge est limitée à certaines versions de navigateur. vérifier ma réponse ci-dessous.
- c'est une mauvaise question, parce que vous pouvez le faire en évitant l'utilisation de Tableaux.
Vous devez vous connecter pour publier un commentaire.
J'ai supposé que
id
s sont destinés à être unique ici.certains
est une fonction très utile pour la vérification de l'existence des choses dans des matrices:JS:
found
seratrue
oufalse
selon que la condition dans la fonction de rappel est rencontré.if (arr.some(function (el) { return el.Id == someId; })) { // do something }
. N'oubliez pas quereturn
ou vous ne serez pas obtenir quelque chose en retour.Il est trivial de vérifier s'il existe un nom d'utilisateur:
Mais il n'est pas si évident que faire lorsque vous ajoutez un nouvel utilisateur de ce tableau. La solution la plus simple - il suffit de pousser un nouvel élément avec
id
égal àarray.length + 1
:Il sera de garantir l'unicité des Id, mais faire de ce tableau l'air un peu étrange si certains éléments seront retirés de sa fin.
Cette de petits extraits qui fonctionne pour moi..
.some
trouve ici - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...La Meilleure Pratique est de ce genre.
Je pense que c'est le plus court moyen de résoudre ce problème. Ici, j'ai utilisé ES6 flèche fonction avec .filtre pour vérifier l'existence de nouvelles nom d'utilisateur.
Lien pour Violon
J'aime Andy réponse, mais l'id ne va pas nécessairement être unique, donc voici ce que j'ai trouvé pour créer un ID unique également. Peut être vérifiée à jsfiddle trop. Veuillez noter que
arr.length + 1
peut très bien ne pas garantir un ID unique si quelque chose avait été retirées précédemment.Vous pourriez prototype de votre tableau pour le rendre plus modulaire, essayer quelque chose comme cela
Et vous pouvez l'utiliser comme:
Fonctions natives de tableau sont parfois 3X - 5X fois plus lent que la normale boucles. En Plus des fonctions natives ne fonctionnent pas dans tous les navigateurs il y a donc un problème de compatibilité.
Mon Code:
De cette façon, vous pouvez obtenir le résultat plus rapidement.
Remarque: je n'ai pas vérifié si le paramètre passé est vide ou pas, si vous voulez vous pouvez mettre un frein ou d'écrire une expression régulière pour la validation en particulier.
Accepté réponse peut aussi être écrite de la manière suivante à l'aide de la flèche de la fonction sur .certains
xorWith
dans Lodash peut être utilisé pour réaliser cetteLe vérifier ici :
https://stackoverflow.com/a/53644664/1084987
Vous pouvez créer quelque chose comme si la condition par la suite, comme