2017-01-06 2 views
-1

Я хочу, чтобы проверить, если data.objectId уже существует в массиве msgArr для этого я бегу ниже:JS - Не можете прочитать свойство «включает в себя» неопределенной

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"} 
] 

Я получаю ошибку ниже:

Cannot read property 'includes' of undefined

+5

'msgArr' - это массив. У него нет 'objectId'. –

+0

@DaveNewton у него есть .. –

+1

@ Folky.H: Тогда у вас нет проблем. –

ответ

5

Как говорится в комментарии: объект массива javascript не имеет свойства objectId.
Глядя на объекты в этом массиве, ясно, что у них есть, поэтому, чтобы проверить, существует ли определенный элемент, который вы можете сделать это, используя Array.prototype.some метод:

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

Пригвожден! +1 спасибо большое! –

1

Это говорит вам, что вы попробуйте для доступа к объекту на неопределенный объект. Объект msgArr не имеет свойства objectID вообще, то есть это undefined. Так как этого не существует, у него нет возможности иметь имеющееся свойство includes любого типа.

Что вам нужно, так это получить доступ к объекту в массиве, а не к самому массиву. Что-то вроде msgArr[0].objectID будет ссылаться на экземпляр объекта. Вы даже можете использовать функции массива, чтобы проверить, существует ли что-то на основе его objectID с функцией фильтрации.

-1

Прежде всего Дэйв Ньютон прав. Массив не имеет объектаId!

Возможно, ваш «массив» не является реальным массивом. Может быть, это объект, который содержит массив ... я не знаю ... но в этом случае вам придется кодировать что-то вроде этого:

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

чем «существует», которая является логическим содержит info, если «msArr» имеет свойство/поле, называемое «objectId»

+2

Массив показан в вопросе. –

+0

oops, my wrong :) массив содержит объект, который имеет это значение ... есть хороший ответ btw ... –

Смежные вопросы