0
votes

Comment puis-je comparer deux tableaux d'objets pour voir s'ils ont les mêmes identifiants, puis renvoient une autre valeur de l'objet correspondant?

Voici donc deux tableaux d'échantillons:

const échantillon1 = [{id: '1', nom: 'JON', Quantité: '5'}, {id: '2', Nom: 'Sue', Quantité: '4'}, {id: '3', nom: 'greg', quantité: '7'}];

const Sample2 = [{id: '1', plat: "cheesecake '}, {id:" 2', plat: "Câble de carotte '}, {id:' 3 ', plat:" Cupcake '}];

Je voudrais écrire une fonction pour comparer les identifiants à partir de Sample1 avec les identifiants de Sample2 . Si les identifiants correspondent, je dois renvoyer la valeur de Sample2. J'ai essayé mapping Sample1 et utiliser Rechercher () à l'intérieur de la boucle sur Sample2 mais ne pouvait pas le faire fonctionner.


2 commentaires

Pouvez-vous montrer le code qui ne fonctionne pas?


À quoi ressemblerait votre résultat attendu?


4 Réponses :


0
votes

Si vous voulez que tous les affammes2 plats qui ont un identifiant correspondant dans Sample1, le code suivant fait l'affaire.

const sample1 = [{id: '1', name: 'jon', quantity: '5'}, {id: '2', name: 'sue', quantity: '4'}, {id: '3', name: 'greg', quantity: '7'}];

const sample2 = [{id: '1', dish: 'cheesecake'}, {id: '2', dish: 'carrot cake'}, {id: '3', dish: 'cupcake'}];

// Array with all Sample2 dishes that have a matching id in Sample1
const result = sample2
  .filter(sample2Entry => sample1.some(sample1Entry => sample1Entry.id === sample2Entry.id))
  .map(sample2Entry => sample2Entry.dish);


0 commentaires

0
votes

Si vous voulez combiner les deux sur la base de l'ID, vous pouvez le faire comme ceci:

p>

const sample1 = [{id: '1', name: 'jon', quantity: '5'}, {id: '2', name: 'sue', quantity: '4'}, {id: '3', name: 'greg', quantity: '7'}];

const sample2 = [{id: '1', dish: 'cheesecake'}, {id: '2', dish: 'carrot cake'}, {id: '3', dish: 'cupcake'}];
  
const result = sample1.map(s1item => ({
  ...s1item,
  dish: sample2.find(s2item => s2item.id === s1item.id) ? sample2.find(s2item => s2item.id === s1item.id).dish : null
}))
  
console.log(result)


0 commentaires

0
votes

Vous pouvez prendre un Set , filtrez les objets et cartographiez la propriété recherchée.

p>

const
    sample1 = [{ id: '1', name: 'jon', quantity: '5' }, { id: '2', name: 'sue', quantity: '4' }, { id: '3', name: 'greg', quantity: '7' }],
    sample2 = [{ id: '1', dish: 'cheesecake' }, { id: '2', dish: 'carrot cake' }, { id: '3', dish: 'cupcake' }],
    set1 = new Set(sample1.map(({ id }) => id)),
    result = sample2
        .filter(({ id }) => set1.has(id))
        .map(({ dish }) => dish);

console.log(result);


0 commentaires

0
votes

Vous pouvez d'abord .MAP () CODE> Votre Sample1 CODE> TRAY à un tableau de IDS code>. Vous pouvez ensuite créer une table de recherche de votre (code> Sample2 code>, qui associe une matrice de plats avec une clé d'identité. Ensuite, utilisez le tableau que vous avez effectué initialement en utilisant .map () code>, vous pouvez .flatmap () code> sur ce tableau pour obtenir tous vos plats pour chaque utilisateur donné:

const sample1 = [{id: '1', name: 'jon', quantity: '5'}, {id: '2', name: 'sue', quantity: '4'}, {id: '3', name: 'greg', quantity: '7'}];
const sample2 = [{id: '1', dish: 'cheesecake'}, {id: '2', dish: 'carrot cake'}, {id: '3', dish: 'cupcake'}];

const sampe1map = sample1.map(({id}) => id);
const lut = new Map(sample2.map(({id, dish}) => [id, dish]));
const res = sampe1map.map(x => lut.get(x));

console.log(res);


0 commentaires