我正在使用外部服务getListOfItemsFromServiceA
接受id
(用户)并返回与该用户关联的5个项目(正好是5个)的列表。
我使用数组解构赋值设置那些工作正常的项的值(只是一个例子):
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)
会返回null
,例如在数据库中找不到id
时。所以我的代码不起作用:
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)
那样添加if条件?
请注意
getListOfItemsFromServiceA
。答案 0 :(得分:3)
这样做:
[item1, item2, item3, item4, item5] = exampleResult || [];
答案 1 :(得分:0)
如果exampleResult为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);