J'ai un objetRetour un nouvel objet avec des propriétés supplémentaires en JavaScript
usersById: {
1: { name: 'John' },
2: { name: 'Michelle' },
...
}
Je veux retourner le même objet, mais d'abord remplir l'objet à id = 2 avec une nouvelle propriété age
, mais coller à immutabilité.
Je pense que ce serait quelque chose comme
return {
...usersById,
...usersById[2].age = 40
}
mais je reçois une erreur In this environment the sources for assign MUST be an object. This error is a performance optimization and not spec compliant
.
Sinon, je pense que ce devrait être quelque chose comme
return Object.keys(usersById).map(userId => {
if (userId === 2) {
return {
...usersById[2],
...age = 40
}
}
return usersById[userId]
})
mais il retourne un tableau et non un objet.
Carte renvoie toujours un tableau, car c'est une méthode de tableau. – evolutionxbox
Je sais, mais n'est pas 'réduire' aussi une méthode tableau qui pourrait retourner un objet avec' arr.reduce ((accumulator, item) => {...}, {}) '? – Jamgreen
Ce n'est pas une tautologie. Les méthodes de tableau ne retournent pas toujours un tableau. Je n'aurais pas dû m'en servir comme explication. – evolutionxbox