2017-07-14 62 views
1

我正在使用外部服務getListOfItemsFromServiceA,它接受用戶的id並返回與此用戶關聯的5項(確切爲5)的列表。JavaScript Array解構賦值和空值

我用數組解構賦值來設置這是工作的罰款這樣的項目(只是一個例子)的值:

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);

我的問題是,在某些情況下,例如,當在數據庫中找不到id時,getListOfItemsFromServiceA(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

這樣做:

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

不是很優雅的意思,它產生'未定義的,未定義的,未定義的,未定義的,未定義的' –

+0

我的確知道。但也許這正是他想要的。 –

+0

正確,OP詢問「有解決方法嗎?」這解決了它:) –

0

您可以添加一個備用如果exam​​pleResult爲null:

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);