2017-07-14 56 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);