javascript - 我可以在对象上使用 indexOf() 吗?
问题描述
当我调用checkInList()
我的 React Native 应用程序时,我收到错误消息:
TypeError
: 无法读取indexOf
未定义的属性
似乎是一个对象而myList[]
不是一个数组,所以我不知道这是否是为什么indexOf
不起作用?我能做些什么呢?我需要它快速运行并快速检查。有没有其他选择?
constructor(props) {
super(props)
this.state = {
myList: []
}
}
// get string list from DynamoDB and set it locally to myList
assign() {
this.setState({myList: userData.data.getlist.mylistfromDB});
}
// Then check if my string is in the list i just set
checkInList() {
if (this.state.myList.indexOf("xyzabc") > -1) {
// In the list!
} else {
// Not in the list
}
}
解决方案
如果您的 setState 数据(即 myList)未定义,这通常是错误。所以检查一次,如果它undefined
你不能使用 indexOf 。
您可以执行以下操作:
assign() {
let dataToBeadded = userData.data.getlist.mylistFromDB;
this.setState({myList: dataToBeadded == undefined ? dataToBeadded : []});
}
推荐阅读
- json - Flutter:当列表数据更改时,getx 控制器未更新。我如何确保添加的每个列表,GetX 控制器都知道这一点?
- java - 为什么在 Java 中的 2D / 3D 数组中需要行大小而列大小是可选的?
- java - 有没有办法启动只通过 API 定义一次的 Kafka 侦听器的多个线程?
- visual-studio-2019 - 如何使用 clickonce .net core 3.1 创建多个桌面快捷方式?
- events - 事件和中断之间的区别
- amazon-web-services - 使用脚本为现有 SQS 队列创建警报
- node.js - firebase googleapis 未验证 nodejs 的令牌
- c++ - 运行时检查失败 #2 - 变量“array1”周围的堆栈已损坏
- javascript - 在 JavaScript 函数中添加动态属性
- c# - 使用 Entity Framework Code First 向表和列添加扩展属性