2016-07-28 10 views
1

デフォルトで考慮されていない余分な値を保持したまま、いくつかのデフォルトパラメータを非構造化によって設定できますか?例:デフォルト以外の値を保持しながらオブジェクトの非構造化にデフォルト値を使用

var ob = {speed: 5, distance: 8} 

function f({speed=0, location='home'}) { 
    return {speed: speed, location: location, /* other keys passed in with their values intact */} 
} 

f(ob) // Would like to return {speed: 5, location: 'home', distance: 8} 

編集:私の機能では、エクストラとして渡される可能性のあるキーの名前がわかりません。例:「distance」という名前のキー、「foo」という名前のキーを受信/返すかどうかを知ることはできません。だから私はある種の使用を考えています。

+0

'リターン{スピード、場所、距離:8}' – gcampbell

+0

私はより多くの私は、余分なキーを知らない状況を探しています私はそれをもっと明確にするために編集します。 –

+1

オブジェクト[property](https://github.com/sebmarkbage/ecmascript-rest-spread)rest/spreadの提案がありますが、現時点ではまだ提案されていません。 – gcampbell

答えて

2

現在のes6ではできませんが、ステージ2のプリセットではrest operatorを使用できます。

function f({speed= 0, location: 'home', ...others}) { 
    return Object.assign({}, {speed, location}, others); 
} 
2

それはまだデフォルトでは説明されない余分な値を保持しつつ、非構造を経由して、いくつかのデフォルトのパラメータを設定することは可能ですか?

現時点では、あなたは別のオブジェクトにデフォルト値を格納し、Object.assignを使用することができます。

var ob = {speed: 5, distance: 8}; 
var defaults = {speed: 0, location: 'home'}; 

function f(obj) { 
    return Object.assign({}, defaults, obj); 
} 

f(ob); 
関連する問題