Page 1 sur 1

Comparer tableau d'objet avec tableau de string

Posté : 08 août 2019, 09:17
par Hidje
Bonjour à tous, je débute en JavaScript et j'ai un problème sur un projet de fin d'études que je développe sur le framework vue js.

Mon problème est le suivant, mon premier tableau de string contient quelque chose comme cela.

Code : Tout sélectionner

var tab1 = ['METIER PROD WEB METIER PROD WEB','METIER PROD WEB METIER QUAL DATA','METIER PROD WEB METIER QUAL WEB', etc...]
Mon deuxième tableau quant à lui est un tableau d'objet, avec un contenu tel que celui-ci

Code : Tout sélectionner

var tab2 = [
  {
    Id: 7523,
    Source: {
      NetworkDomain: 'METIER',
      Environment: 'PROD',
      Area: 'WEB',
    },
    Destination: {
      NetworkDomain: 'METIER',
      Environment: 'PROD',
      Area: 'WEB',
    },
    SecurityCheck: 'Déviation',
  },
  {
    Id: 7524,
    Source: {
      NetworkDomain: 'METIER',
      Environment: 'QUAL',
      Area: 'DATA',
    },
    Destination: {
      NetworkDomain: 'METIER',
      Environment: 'QUAL',
      Area: 'DATA',
    },
    SecurityCheck: 'Déviation',
  },
  {
    Id: 7525,
    Source: {
      NetworkDomain: 'METIER',
      Environment: 'QUAL',
      Area: 'WEB',
    },
    Destination: {
      NetworkDomain: 'METIER',
      Environment: 'QUAL',
      Area: 'WEB',
    },
    SecurityCheck: 'OK',
  },
  {
    Id: 7526,
    Source: {
      NetworkDomain: 'METIER',
      Environment: 'INT',
      Area: 'AGORA',
    },
    Destination: {
      NetworkDomain: 'METIER',
      Environment: 'INT',
      Area: 'AGORA',
    },
    SecurityCheck: 'Impossible',
  },
]
Le but pour moi et de comparer c'est deux tableau je vous explique étape par étape le résultat voulu.
  • Tout d'abord il faut savoir que les trois premier mots de chaque case du tableau de String par exemple METIER PROD WEB représentent les sources d'un objet (NetworkDomain,Environment,Area) du tableau d'objet, ainsi vous l'aurai deviné les 3 autres mot du tableau de String représente les destinations d'un objet (NetworkDomain,Environment,Area)
  • Le but étant pour moi de comparer les données du tab1 avec les sources et destinations du tab2 (NetworkDomain,Environment,Area), puis d'afficher le SecurityCheck de l'objet si les données match entres elles sinon, afficher SecurityCheck Non-défini.
  • Petit exemple : Si on prend la case0 du tab1 elle est égal à 'METIER PROD WEB METIER PROD WEB' donc si on regarde dans tab2 si un objet et similiare il y'a effectivement l'objet 1 donc on affiche SecurityChcek = Déviation.
    Si on prend la case 1 du tab1 'METIER PROD WEB METIER QUAL DATA' aucun objet n'est correspondant donc on affiche SecurityCheck = Non-défini
Pour aller plus loin il serai très bon pour moi d'avoir en fait toutes c'est données stockées dans un nouveau tableau d'objet de ce type.

Code : Tout sélectionner

var tab2 = [
  {
    Source: {
      NetworkDomain: 'METIER',
      Environment: 'PROD',
      Area: 'WEB',
    },
    Destination: {
      NetworkDomain: 'METIER',
      Environment: 'PROD',
      Area: 'WEB',
    },
    SecurityCheck: 'Déviation',
  },
  {
    Id: 7524,
    Source: {
      NetworkDomain: 'METIER',
      Environment: 'PROD',
      Area: 'WEB',
    },
    Destination: {
      NetworkDomain: 'METIER',
      Environment: 'QUAL',
      Area: 'DATA',
    },
    SecurityCheck: 'Non-défini',
  }
]
Je vous suis d'avance très reconnaissant pour votre aide.

Re: Comparer tableau d'objet avec tableau de string

Posté : 08 août 2019, 11:03
par webmaster
Bonjour,

C'est un bon exercice d'algo.
Il faut commencer par une boucle sur tab1 (facile) puis une boucle sur tab2 sur chaque élément de tab1 pour vérifier la concordance de l'objet.

Il n'y a pas de solution simple pour comparer des éléments complexes.