如何匹配Javascript中的空字典?
从节点REPL的东西,
> d = {} {} > d === {} false > d == {} false
鉴于我有一个空的字典,我怎么确定它是一个空的字典?
function isEmpty(obj) { return Object.keys(obj).length === 0; }
你可以用这个isEmpty
方法扩展Object.prototype
来检查一个对象是否没有自己的属性:
Object.prototype.isEmpty = function() { for (var prop in this) if (this.hasOwnProperty(prop)) return false; return true; };
由于它没有属性, for
循环将不会有任何东西来迭代。 为了在这里提供信用,我在这里find了这个build议。
function isEmpty(ob){ for(var i in ob){ return false;} return true; } isEmpty({a:1}) // false isEmpty({}) // true
这是jQuery使用的,工作得很好。 虽然这确实需要jQuery脚本来使用isEmptyObject 。
isEmptyObject: function( obj ) { for ( var name in obj ) { return false; } return true; } //Example var temp = {}; $.isEmptyObject(temp); // returns True temp ['a'] = 'some data'; $.isEmptyObject(temp); // returns False
如果包含jQuery不是一个选项,只需创build一个单独的纯javascript函数。
function isEmptyObject( obj ) { for ( var name in obj ) { return false; } return true; } //Example var temp = {}; isEmptyObject(temp); // returns True temp ['b'] = 'some data'; isEmptyObject(temp); // returns False
如何使用jQuery?
$.isEmptyObject(d)
我远离一个JavaScript学者,但做了以下工作?
if (Object.getOwnPropertyNames(d).length == 0) { // object is empty }
它具有作为单线纯函数调用的优点。
你必须检查它是这样的types的“对象”:
(typeof(d) === 'object')
然后执行一个简短的“大小”函数来检查它是否为空, 如此处所述 。
var SomeDictionary = {}; if(jQuery.isEmptyObject(SomeDictionary)) // Write some code for dictionary is empty condition else // Write some code for dictionary not empty condition
这工作正常。
如果你在Node.js上使用这个代码,就可以在这里使用这段代码
Object.defineProperty(Object.prototype, "isEmpty", { enumerable: false, value: function() { for (var prop in this) if (this.hasOwnProperty(prop)) return false; return true; } } );
如果不考虑性能,这是一个容易记住的简单方法:
JSON.stringify(obj) === '{}'
不过,显然你不想在循环中将大对象串起来。