开发者问题收集

如何在分配给变量之前检查未定义

2022-05-26
110

我正在使用 find 方法提取 ID(字符串),但由于 ID 不存在,因此返回了未定义值。

const additionalLinePhoneNumber = products.find(product => product.name === 'segundaLinea').id;

产品具有以下内容:

(2) [ProductInventoryList, ProductInventoryList]
0: ProductInventoryList {_id: "12345", _name: "lineaFija", _productInventoryCharacteristics: ProductInventoryCharacteristics}
1: ProductInventoryList {_id: "12345", _name: "primeraLinea", _productInventoryCharacteristics: ProductInventoryCharacteristics}
length: 2

因此未返回“segundaLinea”,因此 find 给出了以下错误:

错误:未捕获(在承诺中):TypeError:无法读取未定义的属性“id” TypeError:无法读取未定义的属性“id”

我试过这样做,但没有成功:

const additionalLinePhoneNumber = products.find(product => product.name === 'segundaLinea').id ? undefined : '';

我遗漏了什么?

尝试以下答案:

在此处输入图片说明

2个回答

您可以像这样使用 可选链接

const additionalLinePhoneNumber = products.find(product => product.name === 'segundaLinea')?.id;

编辑:

对于 Typescript,可选链接的支持已在 版本 3.7 中添加。如果您无法更新版本,则必须在多行上进行更新:

const segundaLinea = products.find(product => product.name === 'segundaLinea');
const additionalLinePhoneNumber = segundaLinea ? segundaLinea.id : "";

如果您必须多次执行此操作,则可能应该编写一个辅助函数。

Arkellys
2022-05-26

如果您不想更新,只需使用可选(?)链接

const segundaLinea = products.find(product => product?.name === 'segundaLinea');

const additionalLinePhoneNumber = segundaLinea?.id;
Salman Sayyed
2022-07-15