web-dev-qa-db-ja.com

JSマップの戻りオブジェクト

私はこの配列を手に入れました、

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  elem.launches+10;
     return (elem.country, elem.launches+10);


});
console.log(launchOptimistic);
22
manuelBetancurt

すでに非常に近いので、必要な新しいオブジェクトを返すだけです。この場合、launches値が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

戻りなしで.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);
17
Hemadri Dasari

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)

rocketsを変更したくない場合は、以下を実行できます。

var plusTen = []
rockets.forEach((itm) => {
    plusTen.Push({'country': itm.country, 'launches': itm.launches + 10})
})
4
alfasin

元のオブジェクトを変更する場合は、単純なArray#forEachを実行します。

rockets.forEach(function(rocket) {
    rocket.launches += 10;
});

元のオブジェクトを変更せずに保持する場合は、Array#mapを使用し、Object#assignを使用してオブジェクトをコピーします。

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