Tengo esta matriz,
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 } ];¿Qué debo hacer para devolver una matriz asignada, que suma 10 a cada
lanzamientos
valor, aquí mi primer acercamiento,
var launchOptimistic = rockets.map(function(elem){ // return elem.launches+10; return (elem.country, elem.launches+10); }); console.log(launchOptimistic);Usa .map sin retorno de forma sencilla. También comience a usar let y const en lugar de var porque let y const son más recomendables
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);Ya estás muy cerca, solo necesitas devolver el nuevo objeto que deseas. En este caso, el mismo pero con el valor de los lanzamientos incrementado en 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);Si desea modificar los objetos originales, un simple Array#forEach servirá:
rockets.forEach(function(rocket) { rocket.launches += 10; }); Si desea mantener los objetos originales inalterados, use Array#map y copie los objetos usando Object#assign :
var newRockets = rockets.map(function(rocket) { var newRocket = Object.assign({}, rocket); newRocket.launches += 10; return newRocket; });