J'ai ce tableau,
var rockets = [
{ country:'Russia', launches:32 },
{ country:'US', launches:23 },
{ country:'China', launches:16 },
{ country:'Europe(ESA)', launches:7 },
{ country:'India', launches:4 },
{ country:'Japan', launches:3 }
];
Que dois-je faire pour renvoyer un tableau mappé, qui ajoute 10 à chaque
lancements
valeur, voici ma première approche,
var launchOptimistic = rockets.map(function(elem){
// return elem.launches+10;
return (elem.country, elem.launches+10);
});
console.log(launchOptimistic);
Vous êtes déjà très proche, il vous suffit de retourner le nouvel objet que vous souhaitez. Dans ce cas, le même sauf avec la valeur de lancement incrémentée de 10:
var rockets = [
{ country:'Russia', launches:32 },
{ country:'US', launches:23 },
{ country:'China', launches:16 },
{ country:'Europe(ESA)', launches:7 },
{ country:'India', launches:4 },
{ country:'Japan', launches:3 }
];
var launchOptimistic = rockets.map(function(elem) {
return {
country: elem.country,
launches: elem.launches+10,
}
});
console.log(launchOptimistic);
Utilisez .map sans retour de manière simple. Commencez également à utiliser let et const au lieu de var car let et const est plus recommandé
const rockets = [
{ country:'Russia', launches:32 },
{ country:'US', launches:23 },
{ country:'China', launches:16 },
{ country:'Europe(ESA)', launches:7 },
{ country:'India', launches:4 },
{ country:'Japan', launches:3 }
];
const launchOptimistic = rockets.map(elem => (
{
country: elem.country,
launches: elem.launches+10
}
));
console.log(launchOptimistic);
map
fusées et ajouter 10 à ses lancements:
var rockets = [
{ country:'Russia', launches:32 },
{ country:'US', launches:23 },
{ country:'China', launches:16 },
{ country:'Europe(ESA)', launches:7 },
{ country:'India', launches:4 },
{ country:'Japan', launches:3 }
];
rockets.map((itm) => {
itm.launches += 10
return itm
})
console.log(rockets)
Si vous ne voulez pas modifier rockets
, vous pouvez faire:
var plusTen = []
rockets.forEach((itm) => {
plusTen.Push({'country': itm.country, 'launches': itm.launches + 10})
})
Si vous voulez modifier les objets originaux, alors un simple Array#forEach
fera:
rockets.forEach(function(rocket) {
rocket.launches += 10;
});
Si vous souhaitez conserver les objets d'origine inchangés, utilisez Array#map
et copiez-les à l'aide de Object#assign
:
var newRockets = rockets.forEach(function(rocket) {
var newRocket = Object.assign({}, rocket);
newRocket.launches += 10;
return newRocket;
});