0

我有一个小问题。当我对数组进行过滤时,如果过滤的字段为空,我总是会出错,之后的其余代码都会失败。这是我的代码:

this.order= result.headerText.find((item) => item.textType === 'Order');

如果我有带有'Order'的文本类型,一切都很好,但如果我有文本类型为空,它会引发错误并且其余代码不会执行。

在此处输入图像描述

我如何检查是否有带有 Order 的 textType 并返回它,当它为空时它不会崩溃:)

在此处输入图像描述

4

2 回答 2

2

headerText 中的“项目”可能为 null 但不是 textType

this.order = result.headerText && result.headerText.find((item) => item && item.textType === 'Order');

如果您使用最新版本的打字稿,您可以使用可选链接提案

this.order = result.headerText?.find((item) => item?.textType === 'Order');
于 2020-09-17T18:47:39.950 回答
0

find() 是一个属于数组类型的函数。您从 result.headerText 获得的错误结果为 null 或不是数组。

例如,您可能会考虑这样检查:

if (result.headerText && Array.isArray(result.headerText)) {
    return result.headerText.find(item => item.textType === 'Order')
}

return undefined;
于 2020-09-17T20:29:43.390 回答