JS解构。如何处理null或undefined值

时间:2017-11-20 10:41:02

标签: javascript ecmascript-6

如何在中实现Nullable功能?我需要支持我以前的同事的源代码,他使用了过多的解构功能。这样的事情,每个地方:

dispatch(
    loadImports(response.items.map(({ importRecord: { ['import']: importId } }) => importId))
)

在此示例中,我可能会收到TypeError: Cannot read property 'import' of null错误。

我不想将整个结构重写为常规条件。或者如果没有,如何处理它们而不重写?

UPD:

同事的预期版本: https://jsbin.com/fesewiy/edit?js,console

当前版本:https://jsbin.com/qirixil/edit?js,console

2 个答案:

答案 0 :(得分:2)

因为您正在使用地图,所以您需要为每个项目获得一些结果。 最小变化的最佳解决方案是仅使用一个级别的解构,然后过滤数组以保留非虚假值的数组。

dispatch(
    loadImports(response.items
        .map(({ importRecord }) => importRecord && importRecord.import)
        .filter(v => v)
))

答案 1 :(得分:-1)

您可以将默认参数的值设置为普通对象,使用OR运算符返回importIdnull

arr.map(({ importRecord: { ['import']: importId } = {}}) => importId || null)