JavaScript数组解构赋值和空值

时间:2017-07-14 14:43:42

标签: javascript

我正在使用外部服务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
  • 的代码

2 个答案:

答案 0 :(得分:3)

这样做:

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

答案 1 :(得分: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);