我有一个小问题。当我对数组进行过滤时,如果过滤的字段为空,我总是会出错,之后的其余代码都会失败。这是我的代码:
this.order= result.headerText.find((item) => item.textType === 'Order');
如果我有带有'Order'的文本类型,一切都很好,但如果我有文本类型为空,它会引发错误并且其余代码不会执行。
我如何检查是否有带有 Order 的 textType 并返回它,当它为空时它不会崩溃:)
我有一个小问题。当我对数组进行过滤时,如果过滤的字段为空,我总是会出错,之后的其余代码都会失败。这是我的代码:
this.order= result.headerText.find((item) => item.textType === 'Order');
如果我有带有'Order'的文本类型,一切都很好,但如果我有文本类型为空,它会引发错误并且其余代码不会执行。
我如何检查是否有带有 Order 的 textType 并返回它,当它为空时它不会崩溃:)
headerText 中的“项目”可能为 null 但不是 textType
this.order = result.headerText && result.headerText.find((item) => item && item.textType === 'Order');
如果您使用最新版本的打字稿,您可以使用可选链接提案
this.order = result.headerText?.find((item) => item?.textType === 'Order');
find() 是一个属于数组类型的函数。您从 result.headerText 获得的错误结果为 null 或不是数组。
例如,您可能会考虑这样检查:
if (result.headerText && Array.isArray(result.headerText)) {
return result.headerText.find(item => item.textType === 'Order')
}
return undefined;