2017-07-14 15 views
1

id(of user)を受け入れ、このユーザーに関連付けられた5つの項目(正確に5)のリストを返す外部サービスgetListOfItemsFromServiceAを使用しています。JavaScript配列の構造化代入とnull値

私はこのような微細な(一例)を作動しているそれらの項目の値を設定する割り当てを構造化代入アレイを使用した:

var item1, item2, item3, item4, item5; 
 
//var result = getListOfItemsFromServiceA(1622); 
 
var exampleResult = ['item1', 'item2', 'item3', 'item4', 'item5']; 
 
[item1, item2, item3, item4, item5] = exampleResult; 
 
console.log(item1, item2, item3, item4, item5);

私が持っている問題は、それがいくつかのケースでありますgetListOfItemsFromServiceA(id)は、たとえばidがデータベースに見つからない場合にnullを返します。だから私のコードが動作しない:

var item1, item2, item3, item4, item5; 
 
//var result = getListOfItemsFromServiceA(1622); 
 
var exampleResult = null; 
 
[item1, item2, item3, item4, item5] = exampleResult; 
 
console.log(item1, item2, item3, item4, item5);

は、構文を破壊アレイを使用する代わりにif(getListOfItemsFromServiceA(1622) !== null)のような場合の条件を追加し、これを解決する方法はありますか?

  • 私はgetListOfItemsFromServiceAのコードを変更することはできません。
+0

? – error404

答えて

2

この操作を行います。exampleResultがnullの場合は、フォールバックを追加することができます

[item1, item2, item3, item4, item5] = exampleResult || []; 
+0

それは 'undefined、undefined、undefined、undefined、undefined'を生成するという意味でそれほどエレガントではありません。 –

+0

私は確かに知っています。しかしおそらくこれはまさに彼が望むものです。 –

+0

真実、OPは "それを解決する方法はありますか?"これで解決します:) –

0

を:

var item1, item2, item3, item4, item5; 
 
var exampleResult = null; 
 
[item1, item2, item3, item4, item5] = exampleResult || []; 
 
console.log(item1, item2, item3, item4, item5);

これはundefined, undefined, undefined, undefined, undefinedを生成します。

あなたはまた、破壊さ変数にデフォルト値を設定することができます:あなたが条件ならば追加したくない理由

var item1, item2, item3, item4, item5; 
 
var exampleResult = null; 
 
[item1="", item2="", item3="", item4="", item5=""] = exampleResult || []; 
 
    console.log(item1, item2, item3, item4, item5);

関連する問題