从节点REPL的东西,如何匹配Javascript中的空字典?
> d = {}
{}
> d === {}
false
> d == {}
false
假设我有一个空的字典,我如何确保它是一个空的字典?
从节点REPL的东西,如何匹配Javascript中的空字典?
> d = {}
{}
> d === {}
false
> d == {}
false
假设我有一个空的字典,我如何确保它是一个空的字典?
function isEmpty(obj) {
return Object.keys(obj).length === 0;
}
仅适用于较新的浏览器。为了记录,keys属性仅在IE> = 9 [参考](http://kangax.github.io/compat-table/es5/) – 2014-12-09 04:52:57
由于它没有属性,for
循环将没有任何东西可以迭代。为了在应有的地方给予奖励,我发现这个建议here。
function isEmpty(ob){
for(var i in ob){ return false;}
return true;
}
isEmpty({a:1}) // false
isEmpty({}) // true
我会创建一个count(obj)函数,如果count等于0,isEmpty会被评估。 – 2011-05-20 13:34:30
您可能想在返回false之前检查'obj.hasOwnProperty(i)'。这会过滤掉通过原型链继承的属性。 – 2011-05-20 13:36:38
你可以用这种方法isEmpty
扩展Object.prototype
检查对象是否已经没有自己的属性:
Object.prototype.isEmpty = function() {
for (var prop in this) if (this.hasOwnProperty(prop)) return false;
return true;
};
Wow ..中支持。我觉得JavaScript很有趣,它缺少这种“基本”功能 – harijay 2011-10-12 22:28:57
扩展Object.prototype可能会产生迭代对象的问题http://yuiblog.com/blog/2006/09/26/for-in-intrigue/ – 2014-06-12 14:22:19
这干扰了jquery – 2014-12-24 10:14:06
如果您试穿一下Node.js的使用这个片段,在此基础上的代码here
Object.defineProperty(Object.prototype, "isEmpty", {
enumerable: false,
value: function() {
for (var prop in this) if (this.hasOwnProperty(prop)) return false;
return 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不是一个选项,只需创建一个单独的纯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
}
它具有作为单线纯函数调用的优点。
很酷的解决方案!它实际上是唯一没有循环且没有调用第三方库的程序 – 2015-12-27 13:18:25
var SomeDictionary = {};
if(jQuery.isEmptyObject(SomeDictionary))
// Write some code for dictionary is empty condition
else
// Write some code for dictionary not empty condition
这工作正常。
如果性能是不是一个考虑因素,这是一个简单的方法,很容易记住:
JSON.stringify(obj) === '{}'
显然,你不想成为一个循环字符串化大型对象,虽然。
你可能会考虑使用一个库,例如[check-types](https://www.npmjs.com/package/check-types)。在这种情况下,你可以使用'check.emptyObject(d)'。 – mareoraft 2015-10-29 00:36:27