2016-12-15 12 views
4

オブジェクトの構造を解除するときに、キーが存在するかどうかが分からず、値が取得されないという問題が発生することがあります。これは明らかにエラーです。それらは未定義です。たとえば、次のようにこのような何かを期待ネストされたオブジェクトのデストラクチャリング

は:

{ user: { name: { first: 'Trey', last: 'Hakanson' } } } 

しかし、私は実際にこれを取得:

{ user: {} } 

と、このエラーのようdestructureしようとすると:

const { user: { name: { first: firstName, last: lastName } } } = data 

が任意のです脱構築の初期段階でデフォルト値を割り当てる方法は? nameキーが存在しない場合は、name = { first: 'Hello', last: 'World' }を割り当てますか?

答えて

6
const { user: { name: { first: firstName = 'firstName', last: lastName = 'lastName' } = {} } = {} } = data 
+0

正確に何を探していましたか? – treyhakanson

+0

これは 'name'が' undefined'を守りますが、 'name'が' null ' 「そう? 'name'が' undefined'か 'null'のどちらかを保護する方法はありますか? –

+0

そうは思わない、nullは実際には値です。定義されていないということは、その値が定義されていないことを意味します – Mayday

-1

値が偽値であるか、あなたの場合には未定義である場合、デフォルト値を割り当てることができます。 javascriptでは、||演算子を使用してデフォルト値を割り当てることができます。

第1オペランドがfalsy (false, null, undefined, "",0)の場合、第2オペランドを返します。それ以外の場合は、最初のオペランドを返します。これがデフォルト値

var myDefaultName = name || { first: 'Hello', last: 'World' } 
+0

答えてくれてありがとうを指定する便利な方法を提供します!私は現在、このソリューションを使用していますが、私は解決策を探していました。 – treyhakanson

関連する問題