我想检查数组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}}
我收到以下错误:
无法读取属性'包含'未定义
答案 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"
的属性/字段