javascript - 映射一个数组给了我一些数组的未定义,因为它们是空的
问题描述
我正在使用映射函数来循环对象,并且我想访问对象内部名为“文本”的数组的属性。但是有些数组是空的,所以 text 属性是未定义的。因此,计算机给我一个错误。我收到这个错误
'TypeError:无法读取未定义的属性'文本''
我的方法是使用三元运算符来检查 item.myStocks[0].text 是否存在,然后再对其循环的每个特定对象执行。但它不起作用我正在使用反应。
{this.state.filteredUsers.map((item)=>(
<Table.Row >
<Table.Cell > <p style={{color:'black'}}> {item.myStocks[0].text? item.myStock[0].text : 'array has no texts... '} </p></Table.Cell>
<Table.Cell> <p>datecreated </p> </Table.Cell>
</Table.Row>
<Table.Row >
<Table.Cell > <p style={{color:'black'}}> text</p></Table.Cell>
<Table.Cell> <p> datecreated</p> </Table.Cell>
</Table.Row>
这是映射对象的外观示例。我正在尝试访问“mystocks”的每个对象数组的第一个文本
{dateCreated: "2020-12-02T03:58:44.560Z", myUploads: Array(0), myStocks: Array(3), _id: "5fc727e84297219a0c59b408", email: "sam@yahoo.com", …}
{dateCreated: "2020-12-02T03:58:44.560Z", myUploads: Array(0), myStocks: Array(2), _id: "5fc730104297219a0c59b40d", email: "hip@gmail.com", …}
{dateCreated: "2020-12-02T03:58:44.560Z", myUploads: Array(0), myStocks: Array(0), _id: "5fc730ea4297219a0c59b412", email: "manny@gmail.com", …}
解决方案
尝试使用可选链接来验证 myStocks[0] 是否存在以及文本字段
item.myStocks[0]?.text ? item.myStock[0].text : 'array has no texts... '
在您的代码中,您无法处理不存在对象的文本字段的问题,因此您需要首先验证它是否存在。没有可选链接,它看起来像
(item.myStocks[0] && item.myStocks[0].text) ? item.myStock[0].text : 'array has no texts... '
推荐阅读
- qt - Qt/QML:如何在 QML 中双向同步 ScrollView?
- shopify - 修改 Shopify 搜索 - 显示产品变体,正确分页
- javascript - 如何为我的选择元素和按钮重构事件侦听器?
- python - 为什么我有来自 Openweathermap JSON 和 PyOWM 库的不同 api 响应?
- yaml - 如何在 yaml 文件中找到错误?
- android - 没有找到类“android.view.View?
- android - 带 Flutter 的传送带 - 在本地运行 .net Web 应用程序时出现握手错误
- python - 与python交互拟合
- c# - 如何在面板上制作透明标签?
- kubernetes - Openshift ResourceQuota 使用而不是预留?