首页 > 解决方案 > 解构后备以防止未定义的错误?

问题描述

我有一个数组列表,我这样做:

const { id } = myArray.find(
        (obj) => obj === true)

如果id不存在,它将引发错误。如何在使用解构的同时防止错误?我想将逻辑保持在一行中。

标签: javascriptreactjsobjectdestructuring

解决方案


一旦条件不满足,这里的问题是.find()退货:undefined

数组中满足提供的测试函数的第一个元素的值。否则,undefined返回。

因此,您可能可以使用||运算符来检查是否有任何返回值,或者您可以在运算符的右侧.find()用空对象替换。{}

单线的选项可能如下:

const myArray = [
  { id: 12 },
  { id: 13 },
  { id: 14 }
];

const { id } = myArray.find(e => e.id === 17) || {};

console.log(id);

id因此,即使undefined以这种方式返回,您也可以解构属性。

此外,如果您需要,您可以根据说明解构语句的文档为解构语句添加默认值,如下所示:

如果从对象中解包出来的值为 ,则可以为变量分配默认值undefined

const { id = 10 } = {};

console.log(id);

我希望这有帮助!


推荐阅读