0
votes

Mettre des variables de chaîne en tableau, puis comparant différentes chaînes de valeur variable avec des valeurs variables dans la matrice

J'ai une page angulaire, avec des champs de saisie à partir desquels j'ai lu les valeurs d'entrée et les définir dans des variables à l'intérieur du fichier .TS. Les valeurs entrées peuvent changer, donc je ne peux pas les valeurs de code papier.

Ce sont les variables I définissez des valeurs à l'aide de [(NGModel)]. Tout est bon avec cela, les valeurs sont définies. P> xxx pré>

alors je veux faire une comparaison. Toutes les entrées se terminant par _1 code> sont placées dans le tableau fromarray code>, tous les autres, finissant par _2 code> dans toarray code>.

alors je veux faire une comparaison, car je ne veux pas avoir de valeur à partir de fromarray code> intérieure toarray code>. Dans une fonction, j'ai essayé de faire p> xxx pré>

mais cela ne fonctionne pas. Je suppose que j'ai besoin d'obtenir des valeurs réelles, car il ne semble pas vérifier les valeurs réelles. P>

Comment puis-je réussir à vérifier si la variable de variables a la même valeur que la valeur variables différente? p>

Ceci est tout le code ensemble (échantillonnez-le, comme son vérifiant les autres choses également dans le si code> instruction), devrait le rendre plus clair. p> xxx Pré>

J'aurais pu comparé des valeurs à l'autre, mais je ne voulais pas écrire trop de code, pensais que cela devrait être beaucoup plus court. J'ai passé 2 heures à chercher des exemples similaires, mais aucun n'a aidé. J'ai lu sur array.some () code>, mais il semble que cela ne m'aiderait pas, et causerait une écriture de code supplémentaire, et array.includes () code> est une meilleure option . P>

Toute pointe serait géniale. P>

Je suis nouveau à coder, alors s'il vous plaît soyez doux et demandez des éclaircissements si nécessaire. P>

EDIT : Comme demandé par Jo Carrasco et Dev - Je saisirons le tout: strong> p>

Lien Stackblitz P>

Le formatage HTML est totalement faux dans Stackblitz, mais cela fait ce qui est nécessaire. P>

Le this.Ary. INPUT1_1) CODE> est uniquement dans la première fonction déroulante ( Checkdropdow1 code>) pour l'instant, je ne vois pas besoin d'ajouter à d'autres, car je n'ai besoin de vérifier qu'un seul maintenant. P>

Vous pouvez voir la logique de la désactivation de la touche Suivant code> également - toutes les valeurs doivent être saisies si la case à cocher est cochée et si elles sont identiques dans l'un des endroits (soit 2 déposées sont identiques, soit l'une quelconque des champs de saisie), le bouton doit être désactivé. p>

EDIT 2 FORT> P>

Il semble que cela ne met pas à jour les valeurs de la matrice une fois qu'ils sont dynamiquement modifié. Il faut la première valeur que la variable avait et enregistre cette valeur dans la matrice, mais ne le modifie pas lorsque et édition se produit sur la variable (champ de saisie). P>

- Qu'est-ce que j'ai fait pour résoudre ce problème Je suis une valeur d'épissage de la matrice, de sorte que chaque fois que j'appelle une fonction qui devrait vérifier les valeurs dans la matrice, je supprime puis insérez cette valeur que je dois mettre à jour dans le tableau, puis effectuez une comparaison avec si code > Déclaration intérieure pour code>. Ensuite, je fais le chèque à l'intérieur de l'instruction si code> avec EqualValue code> où l'original array.include.include (); P est censé être. P >

this.fromArray.splice(0, 1, this.input1_1);
this.toArray.splice(0, 1, this.input1_2);

var equalValue = false;

for (let i = 0; i < this.toArray.length; i++) {
  if( this.toArray[i] === this.input1_1) {
    equalValue = true;
    console.log(this.toArray[i]);
    console.log(this.input1_1);
    break;
  }

}


4 commentaires

== true est inutile. Qu'est-ce que ne fonctionne pas exactement? si (ceci.toarray.inclut (this.input1_1) == true) devrait fonctionner comme décrit


Je pensais aussi que je peux exclure le == vrai , merci de clarifier cela. Oui, c'est ce que je pensais que cela fonctionnerait. Donc, si j'entre dans le champ INPUT1_2 VALUE TEST , puis dans le champ INPUT1_1 VALUE TEST , il devrait terminer up as true définit ainsi this.disablenext = true et désactivation du bouton suivant , mais cela ne le fait pas. Il reste activé


S'il vous plaît poster une démo sur Stackblitz afin que les gens répondent plus facilement


@Dev Voici un lien vers Stackblitz


3 Réponses :


0
votes

S'il vous plaît montrer le code actuel afin que nous puissions l'exécuter par nous-mêmes. Il semble que ces propriétés de chaîne ne soient indéfinies.

if (this.toArray.includes(this.input1_1)) {


1 commentaires

Voici un lien vers Stackblitz



0
votes

Si vous ne vous souciez vraiment pas de la valeur exacte, mais que vous ne devez pas avoir de valeur identique, c'est votre solution. Inclure lohash dans votre projet loadash - https://lodash.com/docs/4.17.15#uniq xxx

explication - Si les deux matrices ont des valeurs identiques - xxx

si les deux matrices n'ont aucune valeur identique xxx

espérons que cela aide le codage heureux !! :)


1 commentaires

Pas assez. Je voudrais comparer une valeur de, par exemple, fromarray avec toutes les valeurs de toarray , et après cela, je veux vérifier si fratarray a déjà cette valeur. Je ne veux pas comparer Array contre le tableau, car il pourrait y avoir null ou des chaînes vides, qui compareraient comme existant et ne faisant donc pas ce qui est nécessaire.



0
votes

Qu'est-ce que j'ai fait pour résoudre ce problème, c'est que je suis une valeur d'épissage de la matrice, de sorte que chaque fois que j'appelle une fonction qui devrait vérifier les valeurs dans la matrice, je supprime puis insérez cette valeur que j'ai besoin de mettre à jour dans le tableau, puis de faire une comparaison utilisant si code> instruction intérieure pour code>. Ensuite, je fais le chèque à l'intérieur du si code> instruction avec EqualValue code> où l'original array.include (); code> était censé être.

checkValues() {
  this.fromArray.splice(0, 1, this.input1_1);
  this.toArray.splice(0, 1, this.input1_2);

  var equalValue = false;

  for (let i = 0; i < this.toArray.length; i++) {
    if( this.toArray[i] === this.input1_1) {
      equalValue = true;
      console.log(this.toArray[i]);
      console.log(this.input1_1);
      break;
    }

  }

  if (this.equalValue == true) {
    this.disableNext = true
  } else (this.disableNext = false)
}


0 commentaires