0
votes

Empêcher la duplication de l'identifiant d'élément dans .push () en angulaire

J'ai un éventail d'objets appelés utilisateurs et il est défini dans mon composant comme utilisateurs: tableau = []; , mon objectif est de vérifier si le nouveau demandeur n'a pas Le même identifiant que l'un des utilisateurs déjà présents dans la matrice.

Voici mon modèle pour groupuser: xxx

Je reçois les données du demandeur avec ID que vous tapez manuellement Entrée du backend dans cette fonction: xxx

donc je veux vérifier si admintid ( adminide: numéro; dans mon composant) est égal à tous les utilisateurs) .User de la valeur déjà présente dans mon tableau.

J'ai essayé d'utiliser différentes fonctions pour obtenir le résultat: xxx

mais les nouveaux utilisateurs sont être ajouté au tableau même s'ils ont le même identifiant. Je pense que certaines méthodes peuvent aider mais je ne sais pas comment l'utiliser correctement ici.

Donc, j'essaie de vérifier si l'utilisateur est déjà en groupe avant de l'ajouter là-bas. Il y a beaucoup d'utilisateurs sur la plate-forme et de nombreux groupes pour ces utilisateurs et avant d'ajouter un nouvel utilisateur au groupe et je dois vérifier s'il est déjà là.

Toute aide serait appréciée.


5 commentaires

Que sont this.admin et ceci.admins ? Comment se rapportent-ils à this.adminid et this.utilisateurs ? Vous pouvez montrer la déclaration de toutes ces propriétés dans leurs classes respectives, au lieu de l'expliquer dans du texte.


Ce sont les valeurs que j'utilise à des fins de test: admin: objet = null; Admins: Array = [];


@Logicblower - Deux utilisateurs ayant le même ID peuvent être ajoutés à un fichier "/ code>, car ce sont des objets différents.


ID et utilisateur (dans la classe GroupUser) doivent être uniques et 2 autres valeurs ne doivent pas être uniques


@LogicBlower - Si votre question concerne le définir , deux objets avec les mêmes valeurs de propriété sont des objets toujours différents. Donc, ils peuvent être dans le même ensemble . En d'autres termes, obj1! == obj2 , même si toutes les valeurs de propriété sont les mêmes.


3 Réponses :


1
votes

Vous n'avez besoin d'ajouter le nouvel utilisateur qu'après avoir vérifié toutes. au lieu de cela, vous l'avez au milieu de votre boucle pour la boucle, il va donc l'ajouter encore et encore.

Essayez ceci: xxx

une solution encore meilleure serait de générer un identifiant aléatoire basé sur l'horodatage.


3 commentaires

Pourquoi sur Terre une pièce d'identité aléatoire?


N'est-il pas d'essayer de créer un identifiant unique pour chaque utilisateur?


Merci Rick, le drapeau fonctionne bien, mais je pensais que je peux le faire dans pour boucle ou à l'aide de certains () méthode. Je n'essaie pas de créer un identifiant unique pour chaque utilisateur, ces utilisateurs existent déjà dans la base de données et j'essaie simplement de vérifier si l'utilisateur est déjà en groupe avant de l'ajouter là-bas. Donc, fondamentalement, j'ajoute un nouvel utilisateur au groupe et je dois vérifier s'il est déjà là.



0
votes

ID est le nom du champ ... qui n'est jamais comparé à.

adminide devrait probablement être userid , pour le souci de lisibilité.

Bien que franchement, triez-le déjà sur le côté serveur.


0 commentaires

1
votes

Vous pouvez utiliser le tableau certains () code> de la manière suivante

p>

if(!this.users.some(user => user.user === this.adminId)) {
  this.users.push({user: this.adminId, permissions: this.g.admin_rights.value});
}


1 commentaires

Merci beaucoup. C'est ce que j'essayais de faire