0
votes

Comparez deux matrices avec équité objet

J'ai deux types à des structures de données

var dataA = [
  {
    "Employee Name": "Mr. X",
    id: "1",
    "Portfolio Lead": "A"
  },
  {
    "Employee Name": "Mr. Y",
    id: "2",
    "Portfolio Lead": "B"
  },
  {
    "Employee Name": "Mr. Z",
    id: "3",
    "Portfolio Lead": "#NA"
  }
];


2 commentaires

Que voulez-vous en sortie? pouvez-vous décrire plus?


Mise à jour ma question


3 Réponses :


0
votes

Ajouter une condition BOOL pour vérifier si une correspondance s'est produite. Si ce n'est pas le cas, définissez la propriété de votre objet sur "#na" comme vous le souhaitez.

function mergeTwoArray() {
  dataA.forEach(row => {
    var rowMatches = false;
    dataB.forEach(lead => {
      if (lead["id"] === row["id"]) {
        rowMatches = true;
        row["Portfolio Lead"] = lead["Portfolio Lead"];
      }
    });
    if (!rowMatches) {
      row["Portfolio Lead"] = "#NA";
    }
  });
  console.log(dataA);
}


0 commentaires

0
votes

Vous pouvez essayer ceci:

function mergeTwoArray() {
  dataA.forEach(row => {
    let idxId = dataB.findIndex((lead) => lead["id"] == row["id"]);

    if (idxId >= 0) {
      row["Portfolio Lead"] = dataB[idxId]["Portfolio Lead"];
    } else {
      row["Portfolio Lead"] = "#NA";
    }
  });
  console.log(dataA);
}


0 commentaires

0
votes

Vous pouvez ajouter une instruction d'autre si comme ci-dessous - xxx pré>

lorsque vous mettez ligne ["portfolio plomb"] = "#na"; code> Sinon, bloquez sa mise à jour à chaque fois que pour chaque itération dans la boucle extérieure, la boucle interne a exécuté la longueur de DANGT em> fois. Et ici, je vérifie si je vérifie si l'ID de la boucle externe> ID de la boucle interne puis met à jour. P>

Donc, votre code ressemblera à: P>

dataA.forEach(row => {
  dataB.forEach(lead => {
    if (lead["id"] === row["id"]) {
      row["Portfolio Lead"] = lead["Portfolio Lead"];
    } else if(row["id"] > lead["id"]){
      row["Portfolio Lead"] = "#NA";
    }
  });
});


0 commentaires