如何匹配Javascript中的空字典?

从节点REPL的东西,

> d = {} {} > d === {} false > d == {} false 

鉴于我有一个空的字典,我怎么确定它是一个空的字典?

10 Solutions collect form web for “如何匹配Javascript中的空字典?”

 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) === '{}' 

不过,显然你不想在循环中将大对象串起来。

  • c#/。net 3.5字典是如何实现的?
  • Java相当于Python字典
  • 我如何序列化一个Python字典到一个string,然后回到一个字典?
  • python元组字典
  • 如何在Python中将字典项目作为函数parameter passing?
  • 检查字典列表中是否已经存在值?
  • 如何dynamic创build字典并添加键值对
  • .NET ObservableDictionary
  • 为什么浮点字典键可以用相同的值覆盖整数键?
  • 如何在AngularJs中为ng-repeat使用字典?
  • 如何将默认值设置为Python中的字典对象的所有键?