JS - 无法读取未定义的属性“包含”

时间:2017-01-06 18:02:44

标签: javascript typescript ecmascript-6

我想检查数组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"} 
 ]

数组如下所示:

{{1}}

我收到以下错误:

  

无法读取属性'包含'未定义

3 个答案:

答案 0 :(得分:10)

正如评论所说:javascript数组对象没有属性objectId 看一下这个数组中的对象,很清楚它们有它,所以要检查某个元素是否存在,你可以使用Array.prototype.some方法这样做:

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

答案 1 :(得分:1)

它告诉您,您正在尝试访问未定义对象上的属性。 msgArr对象根本没有属性objectID,这意味着未定义。由于不存在,因此无法使用任何类型的includes属性。

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

答案 2 :(得分:-1)

首先戴夫牛顿是对的。数组没有objectId!

也许你的"阵列"不是一个真正的数组。也许它是一个包含数组的对象...我不知道......但在这种情况下,你必须编写类似这样的代码:

var exist = msArr["objectId"] !== undefined

存在"存在"这是一个布尔包含信息if" msArr"有一个名为" objectId"

的属性/字段