2016-10-21 93 views
1

我想檢查以下,檢查的對象是空的,並與未定義的屬性

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

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

在用例2是有,我可以利用,因爲所有屬性未定義返回true任何其他功能。

我提到這個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

,沒有下劃線:

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

會接受一個對象,如果對象是空的(沒有屬性),或者如果所有屬性都undefined值返回true。否則返回false。

+0

我是與ECMA很新東西,請你詳細介紹一下我如何調用這個功能 – Sai

+1

這隻會給枚舉屬性,這可能是好的。 Object.getOwnPropertyNames()'如果OP需要全部,'Object.getOwnPropertySymbols()'包含ES6符號。 –

+0

@Sai像這樣:'objEmpty(obj)'或'objEmpty({foo:undefined})' –

相關問題