Si j'ai le tableau d'objets suivant:
[ { id: 1, username: 'fred' }, { id: 2, username: 'bill' }, { id: 2, username: 'ted' } ]
Existe-t-il un moyen de parcourir le tableau pour vérifier si une valeur de nom d'utilisateur particulière existe déjà et si elle ne fait rien, mais si ce n'est pas pour ajouter un nouvel objet au tableau avec ledit nom d'utilisateur (et le nouvel ID)?
Merci!
id
? Est-ce possible que des éléments soient supprimés de ce tableau ou pouvons-nous être sûrs que le nouvel élément sera toujoursid
égal àarr.length + 1
?Réponses:
J'ai supposé que les
id
s sont censés être uniques ici.some
est une excellente fonction pour vérifier l'existence de choses dans les tableaux:la source
some
ne renvoie une valeur booléenne.found
sera soittrue
oufalse
selon que la condition du rappel est remplie.if (arr.some(function (el) { return el.Id == someId; })) { // do something }
. N'oubliez pas celareturn
ou vous ne récupérerez rien.Il est assez simple de vérifier le nom d'utilisateur existant:
Mais ce n'est pas si évident que faire lorsque vous devez ajouter un nouvel utilisateur à ce tableau. La solution la plus simple - il suffit de pousser un nouvel élément
id
égal àarray.length + 1
:Cela garantira l'unicité des ID, mais rendra ce tableau un peu étrange si certains éléments sont retirés de sa fin.
source
Ce petit extrait fonctionne pour moi.
source
.some
trouvés ici - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Je pense que c'est le moyen le plus court de résoudre ce problème. Ici, j'ai utilisé la fonction de flèche ES6 avec .filter pour vérifier l'existence d'un nom d'utilisateur nouvellement ajouté.
Lien vers Fiddle
source
C'est ce que j'ai fait en plus de la réponse de @ sagar-gavhane
source
...
if(userExists) { const userId = userExists.id return userId; }
...
La réponse acceptée peut également être écrite de la manière suivante en utilisant la fonction de flèche sur .some
source
Voici une chaîne de méthodes ES6 utilisant
.map()
et.includes()
:source
J'aime la réponse d'Andy, mais l'identifiant ne sera pas nécessairement unique, alors voici ce que j'ai proposé pour créer un identifiant unique également. Peut également être vérifié sur jsfiddle . Veuillez noter que cela
arr.length + 1
peut très bien ne pas garantir un identifiant unique si quelque chose avait été supprimé précédemment.source
Vous pouvez prototyper votre baie pour la rendre plus modulaire, essayez quelque chose comme ça
Et vous pouvez l'utiliser comme:
source
J'ai essayé les étapes ci-dessus pour une raison quelconque, cela ne semble pas fonctionner pour moi, mais c'était ma solution finale à mon propre problème, peut-être utile à quiconque lit ceci:
ici post.likes est un tableau d'utilisateurs qui ont aimé un message.
source
essaye ça
première méthode utilisant certains
deuxième méthode utilisant inclut, map
source
Supposons que nous ayons un tableau d'objets et que vous vouliez vérifier si la valeur du nom est définie comme ceci,
la source
Les fonctions natives du tableau sont parfois 3 à 5 fois plus lentes que les boucles normales. De plus, les fonctions natives ne fonctionneront pas dans tous les navigateurs, il y a donc des problèmes de compatibilité.
Mon code:
De cette façon, vous pouvez obtenir un résultat plus rapidement.
Remarque: je n'ai pas vérifié si le paramètre passé est vide ou non, si vous le souhaitez, vous pouvez le cocher ou écrire une expression régulière pour une validation particulière.
la source
xorWith
à Lodash peut être utilisé pour y parvenirla source
Vérifiez-le ici:
https://stackoverflow.com/a/53644664/1084987
Vous pouvez créer quelque chose comme si condition après, comme
la source
function number_present_or_not () {
var arr = [ 2,5,9,67,78,8,454,4,6,79,64,688 ] ;
var found = 6; var found_two; pour (i = 0; ila source
La meilleure pratique est comme ça.
la source