JavaScript 错误:无法读取未定义的属性“包含”

新手上路,请多包涵

我想检查 data.objectId 是否已经存在于数组 msgArr 中。为此,我正在运行以下代码:

 var exists = msgArr.objectId.includes(data.objectId);

if(exists === false){
   msgArr.push({"objectId":data.objectId,"latLont":data.latLont,"isOnline":data.isOnline});
}

该数组如下所示:

 var msgArr = [
  {isOnline:true,latLont:"123",objectId:"on0V04v0Y9"},
  {isOnline:true,latLont:"1",objectId:"FpWBmpo0RY"},
  {isOnline:true,latLont:"48343",objectId:"Qt6CRXQuqE"}
 ]

我收到以下错误:

无法读取未定义的属性“包括”

原文由 Folky.H 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 343
2 个回答

正如评论所说:javascript 数组对象没有属性 objectId

看看这个数组中的对象,很明显它们有它,所以要检查某个元素是否存在,你可以使用 Array.prototype.some 方法来做到这一点:

 var exists = msgArr.some(o => o.objectId === data.objectId);

原文由 Nitzan Tomer 发布,翻译遵循 CC BY-SA 3.0 许可协议

它告诉您您正在尝试访问未定义对象的属性。 msgArr 对象根本没有属性 objectID ,这意味着它是 undefined 。因为它不存在,所以它无法拥有任何类型的 includes 属性。

您需要的是访问数组中的对象,而不是数组本身。像 msgArr[0].objectID 这样的东西会引用一个实例化的对象。您甚至可以使用数组函数根据其 objectID 和过滤函数来检查是否存在某些内容。

原文由 gelliott181 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题