检查对象是否为空且具有未定义的属性

时间:2016-10-21 15:57:39

标签: javascript node.js underscore.js

我正在尝试检查以下内容,

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

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

在usecase 2中,我可以利用任何其他函数返回true,因为所有属性都是未定义的。

我引用了这个http://www.ericfeminella.com/blog/2012/08/18/determining-if-an-object-is-empty-with-underscore-lo-dash/但不确定如何在不修改本机方法的情况下实现它。

2 个答案:

答案 0 :(得分:1)

没有下划线:

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

如果对象为空(无属性)或所有属性都具有undefined值,则接受对象并返回true。否则返回false。

答案 1 :(得分:0)

您可以使用every并传递isUndefined谓词:

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

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

或者你可以omit未定义的值并检查对象是否为空:

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