2016-10-21 2 views
1

Я пытаюсь проверить ниже,Проверить, если объект пуст и с неопределенными свойствами

USECASE: 1 
var obj = {}; 
_.isEmpty(obj); ====> returns true 

USECASE: 2 
var obj = { model: undefined, vendor: undefined, type: undefined } 
_.isEmpty(obj); ====> returns false 

В USECASE 2 есть ли другие функции, которые я мог бы использовать, чтобы вернуться верно, так как все свойства не определены ,

Я сослался на этот http://www.ericfeminella.com/blog/2012/08/18/determining-if-an-object-is-empty-with-underscore-lo-dash/, но не уверен, как его реализовать без изменения собственного метода.

ответ

0

Вы можете использовать every и передать в isUndefined предиката:

var obj = { model: undefined, vendor: undefined, type: undefined } 

var result = _.every(obj, _.isUndefined); 

В качестве альтернативы вы можете omit неопределенные значения и проверить, пуст ли объект:

var result = _.isEmpty(_.omit(obj, _.isUndefined)); 
1

Без Underscore:

const objEmpty = obj => Object.keys(obj).every(key => obj[key] === undefined); 

будет принимать объект и возвращает истину, если объект является пустым (без свойств) или, если все свойства имеют undefined значения. Else возвращает false.

+0

я довольно новый с ECMA вы можете подробно рассказать о том, как я могу вызвать эту функцию. – Sai

+1

Это даст только перечисляемые свойства, которые могут быть в порядке. 'Object.getOwnPropertyNames()', если OP нуждается во всех, и 'Object.getOwnPropertySymbols()' для включения символов ES6. –

+0

@Sai Нравится так: 'objEmpty (obj)' или 'objEmpty ({foo: undefined})' –

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

  • Нет связанных вопросов^_^