首页 > 解决方案 > 我可以在对象上使用 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
  }    
}

我的列表: 在此处查看列表

标签: javascriptdatabasereact-native

解决方案


如果您的 setState 数据(即 myList)未定义,这通常是错误。所以检查一次,如果它undefined你不能使用 indexOf 。

您可以执行以下操作:

  assign() {
  let dataToBeadded = userData.data.getlist.mylistFromDB;
  this.setState({myList: dataToBeadded == undefined ? dataToBeadded : []}); 
}

推荐阅读