2016-03-24 2 views
0

Я получаю массив объектов из моего ответа JSON. Иногда я получаю массив длиной 1 с пустым объектом. Как проверить это условие?Javascript: как проверить пустой объект в массиве?

I tried with a few things- 

    myarray[0]=='empty' || myarray[0] == 'undefined' 
    or myarray.indexOf(0)== -1 

Но не решена проблема

+1

Что вы подразумеваете под «пустым»? Самое «пустое» значение, о котором я могу думать, - «undefined», но JSON не может дать вам массив с «неопределенной» записью, поскольку у этого нет этой концепции. –

+0

FYI, 'myarray [0] == 'empty'' проверяет, является ли первый элемент массива ** строкой **' 'empty''. Это не похоже на полезную вещь, чтобы попробовать в первую очередь. Аналогично, 'myarray.indexOf (0)' пытается найти индекс * значения * '0'. Похоже, вам стоит разогнать некоторые основы JavaScript о значениях: http://eloquentjavascript.net/01_values.html, http://eloquentjavascript.net/04_data.html. –

ответ

9

Вы можете использовать Object.keys() метод, чтобы вернуть все имена свойств и проверить его длина:

Object.keys(myarray[0]).length === 0; 
+0

@ T.J.Crowder У меня создается впечатление, что это что-то вроде '' [{}] "'. Вопрос может быть уточнен. –

+0

Я неправильно понял ваш ответ. Вы вполне можете быть прав насчет того, что означает пользователь, приятно поймать. –

+0

Спасибо за ваш быстрый ответ Sir – JOGO

3

Это зависит от того, что вы подразумеваете под «пустым. "

Если вы имеете в виду, что вы получаете:

[{}] 

... потом madox2's answer is a good way to check, и ни один из ниже не будет работать.

Но если вы имеете в виду [null] или аналогичные:

Если вы хотите проверить, специально для undefined (обратите внимание на ===, а не ==) (но вы не получите, что с JSON):

if (myarray[0] === undefined) 

Или специально для null (обратите внимание на ===, а не ==):

if (myarray[0] === null) 

Или для любого из них (обратите внимание на ==, а не ===):

if (myarray[0] == null) 

Или для любого falsy значение (0, "", NaN, null, undefined, или, конечно, false):

if (!myarray[0]) 
Смежные вопросы