2017-12-16 5 views
2

私はこの配列、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 } 
]; 

私は各

に10を追加してマッピングされた配列を返すように行うには何が必要ですが

値を起動しましたここに私の最初のアプローチ、

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


}); 
console.log(launchOptimistic); 
+0

元のオブジェクトを変更しますか?または、新しいオブジェクト(コピー)を作成したいですか? –

+0

同様の戻り配列も可能です – MaKo

答えて

4

あなたはすでに非常に近いです。あなたが望む新しいオブジェクトを返す必要があります。この場合、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);

2

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よuが行うことができます:あなたが変更されていない元のオブジェクトを保持したい場合は、その後、

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

Array#mapを使用してコピーします。

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

これは元の配列の項目を変更することに注意してください。 – CRice

+0

@CRiceあなたは正しいです! – alfasin

1

あなたは、元のオブジェクトを変更したい場合は、簡単なArray#forEachを行いますオブジェクトを使用してObject#assign

var newRockets = rockets.forEach(function(rocket) { 
    var newRocket = Object.assign({}, rocket); 
    newRocket.launches += 10; 
    return newRocket; 
}); 
関連する問題