man*_*urt 24 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 }
];
Run Code Online (Sandbox Code Playgroud)
我需要做什么来返回一个映射的数组,每个数组都加10
发布会
价值,这是我的第一个方法,
var launchOptimistic = rockets.map(function(elem){
// return elem.launches+10;
return (elem.country, elem.launches+10);
});
console.log(launchOptimistic);
Run Code Online (Sandbox Code Playgroud)
CRi*_*ice 34
你已经非常接近了,你只需要返回你想要的新对象.在这种情况下,相同的一个除了启动值增加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);Run Code Online (Sandbox Code Playgroud)
Hem*_*ari 18
以简单的方式使用.map而不返回.也开始使用let和const而不是var,因为更推荐let和const
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);Run Code Online (Sandbox Code Playgroud)
Emr*_*mre 11
最干净的解决方案是解构。
const rockets = [
{ country:'Russia', launches:32 },
{ country:'US', launches:23 },
{ country:'China', launches:16 },
{ country:'Europe(ESA)', launches:7 },
{ country:'India', launche`enter code here`s:4 },
{ country:'Japan', launches:3 }
];
const updated = rockets.map(rocket=>{
return {...rocket,launches:rocket.launches+10}
});
Run Code Online (Sandbox Code Playgroud)
如果你想改变原始对象,那么一个简单的方法Array#forEach就可以了:
rockets.forEach(function(rocket) {
rocket.launches += 10;
});
Run Code Online (Sandbox Code Playgroud)
如果要保持原始对象不变,请使用Array#map并使用Object#assign以下方法复制对象:
var newRockets = rockets.map(function(rocket) {
var newRocket = Object.assign({}, rocket);
newRocket.launches += 10;
return newRocket;
});
Run Code Online (Sandbox Code Playgroud)
map 火箭并为其发射增加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 }
];
rockets.map((itm) => {
itm.launches += 10
return itm
})
console.log(rockets)Run Code Online (Sandbox Code Playgroud)
如果您不想修改rockets,可以执行以下操作:
var plusTen = []
rockets.forEach((itm) => {
plusTen.push({'country': itm.country, 'launches': itm.launches + 10})
})
Run Code Online (Sandbox Code Playgroud)