Je veux ajouter une nouvelle propriété (contactDetails.countryName) et attribuer une valeur à un objet imbriqué stocké dans un tableau appelé users en utilisant la fonction map().
J'ai récemment appris que je devais utiliser l'opérateur d'étalement (...) et ensuite créer/assigner la nouvelle propriété afin d'éviter de modifier mon tableau d'objets d'origine. J'ai donc développé deux implémentations différentes pour cela, mais je ne suis pas vraiment sûr de suivre les meilleures pratiques pour accomplir ce que je veux en ce qui concerne la sémantique et les performances.
À votre avis, quelle serait la meilleure approche pour accomplir ce que je veux faire ?
const countries = [
{ id: 3, countryName : "UK" },
{ id: 4, countryName : "Spain" },
{ id: 6, countryName : "Germany"}
];
const users = [
{ id : 1,
name: "Douglas Camp",
dateOfBirth: "23-06-1984",
contactDetails:
{
country: 3,
phone: "7373724997"
}
},
{
id : 2,
name: "Martin Stein",
dateOfBirth: "19-08-1992",
contactDetails:
{
country: 6,
phone: "3334343434"
}
},
];
const usersData = users.map(user=> {
// Version 1 : using spreading operator twice
const newUser = {
...user,
contactDetails: {
...user.contactDetails,
countryName: countries.find(c=> c.id == user.contactDetails.country).countryName
}
};
return newUser;
});
// Version 2: copying the original object property and using spread operator only for cloning the nested object properties
const newUser = {
id: user.id,
name: user.name,
dateOfBirth: user.dateOfBirth,
contactDetails: {
...user.contactDetails,
countryName: countries.find(c=> c.id == user.contactDetails.country).countryName
}
};
console.log(users);
console.log(usersData);