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"
}
];
3 Réponses :
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);
}
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);
}
Vous pouvez ajouter une instruction d'autre si comme ci-dessous - lorsque vous mettez Donc, votre code ressemblera à: P> 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> 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";
}
});
});
Que voulez-vous en sortie? pouvez-vous décrire plus?
Mise à jour ma question