Javascript JS映射返回对象

Javascript JS映射返回对象,javascript,dictionary,Javascript,Dictionary,我得到了这个数组 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 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 }
];
我需要做什么才能返回一个映射的数组,每个数组加10

发射

价值观,这是我的第一个方法

var launchOptimistic = rockets.map(function(elem){
  // return  elem.launches+10;
     return (elem.country, elem.launches+10);


});
console.log(launchOptimistic);

你已经非常接近了,你只需要返回你想要的新对象。在这种情况下,除了Launchs值增加10外,其他值相同:

var=[
{国家:'俄罗斯',发射:32},
{国家:'US',发射:23},
{国家:'中国',发射:16},
{国家:'欧洲(欧空局)'发射:7},
{国家:'印度',发射:4},
{国家:'日本',发射:3}
];
var launchOptimistic=rockets.map(函数(elem){
返回{
国家:elem.country,
发射:元素发射+10,
} 
});

console.log(启动乐观)
地图
火箭发射,并在发射中增加10枚:

var=[
{国家:'俄罗斯',发射:32},
{国家:'US',发射:23},
{国家:'中国',发射:16},
{国家:'欧洲(欧空局)'发射:7},
{国家:'印度',发射:4},
{国家:'日本',发射:3}
];
火箭地图((itm)=>{
itm发射+=10
返回itm
})

console.log(rockets)
如果您想更改原始对象,那么一个简单的
数组#forEach
可以:

rockets.forEach(function(rocket) {
    rocket.launches += 10;
});
如果要保持原始对象不变,请使用
Array#map
并使用
Object#assign
复制对象:

var newRockets = rockets.map(function(rocket) {
    var newRocket = Object.assign({}, rocket);
    newRocket.launches += 10;
    return newRocket;
});

以简单的方式使用.map而不返回。还可以开始使用let和const而不是var,因为更推荐使用let和const

const火箭=[
{国家:'俄罗斯',发射:32},
{国家:'US',发射:23},
{国家:'中国',发射:16},
{国家:'欧洲(欧空局)'发射:7},
{国家:'印度',发射:4},
{国家:'日本',发射:3}
];
const launchOptimistic=rockets.map(elem=>(
{
国家:elem.country,
发射:元素发射+10
} 
));

console.log(启动乐观)是否要更改原始对象?或者您想创建新对象(副本)?返回数组类似可以是新的我注意到这将改变原始数组中的项。@CRice true,添加了另一个不改变原始数组的选项调整了一个问题:为什么需要围绕返回对象的四舍五入排列?为什么lambda不能像这样返回对象:
const launchOptimistic=rockets.map(elem=>{country:elem.country,launches:elem.launches+10})?圆括号用于返回多行语句。@Iorweth333因为语法
()=>{}
使用大括号来声明函数体,所以它不会返回对象,而是实际尝试将大括号的内容作为函数进行求值,并抛出语法错误。在第二个示例中,您打算使用
map
,而不是
forEach
?@T30是的,谢谢您指出!