如何在分配给变量之前检查未定义
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