web-dev-qa-db-fra.com

Objet de retour de carte JS

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);
22
manuelBetancurt

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);
33
CRice

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);
17
Hemadri Dasari

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})
})
4
alfasin

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;
});
3
ibrahim mahrir