Voici donc deux tableaux d'échantillons: P>
Je voudrais écrire une fonction pour comparer les identifiants à partir de const échantillon1 = [{id: '1', nom: 'JON', Quantité: '5'}, {id: '2', Nom: 'Sue', Quantité: '4'}, {id: '3', nom: 'greg', quantité: '7'}]; code> p>
const Sample2 = [{id: '1', plat: "cheesecake '}, {id:" 2', plat: "Câble de carotte '}, {id:' 3 ', plat:" Cupcake '}]; code> p>
Sample1 code> avec les identifiants de Sample2 code>. Si les identifiants correspondent, je dois renvoyer la valeur code> code> de Sample2. J'ai essayé mapping Sample1 et utiliser Rechercher () code> à l'intérieur de la boucle sur Sample2 mais ne pouvait pas le faire fonctionner. p>
4 Réponses :
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);
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) 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); 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);
Pouvez-vous montrer le code qui ne fonctionne pas?
À quoi ressemblerait votre résultat attendu?