-1
votes

Vérifiez si le champ d'un tableau d'objets est manquant dans un autre tableau d'objets

dire que nous avons un tableau d'objets comme celui-ci:

var array3 = [
 {first_name: 'Bob', last_name: 'Jones', email: 'bobjones@gmail.com'},
 {first_name: 'Susan', last_name: 'Anderson', email: 'susananderson@gmail.com'},
 {first_name: 'John', last_name: 'Smith', email: 'johnsmith@gmail.com', active: false}
]


0 commentaires

3 Réponses :


2
votes

Utilisez un foreach code> boucle et un filtre code>

p>

var array1 = 
[
 {first_name: 'Bob', last_name: 'Jones', email: 'bobjones@gmail.com'},
 {first_name: 'Susan', last_name: 'Anderson', email: 'susananderson@gmail.com'}
]

var array2 =
[
 {first_name: 'Bob', last_name: 'Jones', email: 'bobjones@gmail.com'},
 {first_name: 'Susan', last_name: 'Anderson', email: 'susananderson@gmail.com'},
 {first_name: 'John', last_name: 'Smith', email: 'johnsmith@gmail.com'}
]
array2.forEach((e)=>{
array1.filter(k=>e.email==k.email).length==0?e.active="false":false;
})
console.log(array2)


0 commentaires

1
votes

Vous pouvez utiliser Carte Code> et Mapper code>

  • Modifier le tableau1 sur Carte code>, donc l'accès à l'e-mail de Array1 peut être effectué dans O (1) LI>
  • boucle sur Array2, ajoutez actif code> clé conditionnellement basé sur la présence d'e-mail dans newMap code> li> ul>

    p>

    let array1 = [{first_name: 'Bob', last_name: 'Jones', email: 'bobjones@gmail.com'},{first_name: 'Susan', last_name: 'Anderson', email: 'susananderson@gmail.com'}]
    let array2 =[{first_name: 'Bob', last_name: 'Jones', email: 'bobjones@gmail.com'}, {first_name: 'Susan', last_name: 'Anderson', email: 'susananderson@gmail.com'}, {first_name: 'John', last_name: 'Smith', email: 'johnsmith@gmail.com'}]
    let newMap = new Map(array1.map(({email})=>[email,true]))
    
    let final = array2.map(obj=>({
        ...obj,
        ...(!newMap.has(obj.email) && {active: false})
      })
    )
    
    console.log(final)


0 commentaires

1
votes

Vous pouvez maintenir un ensemble de tous les courriels à partir du tableau1 et qu'utiliser array.map () code> sur Array2 pour obtenir le résultat souhaité:

p>

let array1 = [ {first_name: 'Bob', last_name: 'Jones', email: 'bobjones@gmail.com'}, {first_name: 'Susan', last_name: 'Anderson', email: 'susananderson@gmail.com'} ]
let array2 =[ {first_name: 'Bob', last_name: 'Jones', email: 'bobjones@gmail.com'}, {first_name: 'Susan', last_name: 'Anderson', email: 'susananderson@gmail.com'}, {first_name: 'John', last_name: 'Smith', email: 'johnsmith@gmail.com'} ];

let set = new Set(array1.map(({email})=> email));

let array3 = array2.map(o =>{
  if(!set.has(o.email))
    o.active = false;
   return o;
});
console.log(array3);


0 commentaires