从 Node REPL 中,
> d = {}
{}
> d === {}
false
> d == {}
false
假设我有一个空字典,如何确保它是一个空字典?
从 Node REPL 中,
> d = {}
{}
> d === {}
false
> d == {}
false
假设我有一个空字典,如何确保它是一个空字典?
function isEmpty(obj) {
return Object.keys(obj).length === 0;
}
你可以通过扩展Object.prototype
来使用此isEmpty
方法检查对象是否没有自有属性:
Object.prototype.isEmpty = function() {
for (var prop in this) if (this.hasOwnProperty(prop)) return false;
return true;
};
Object.prototype.isEmpty: this= undefined
,因此无法正常工作,如何修复此问题? - crifan用jQuery如何?
$.isEmptyObject(d)
由于它没有属性,for
循环将没有任何要迭代的内容。为了归功于建议者,我在这里找到了这个建议。
function isEmpty(ob){
for(var i in ob){ return false;}
return true;
}
isEmpty({a:1}) // false
isEmpty({}) // true
obj.hasOwnProperty(i)
。这将过滤掉通过原型链继承的属性。 - Elian Ebbing这就是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
我远非JavaScript学者,但以下内容是否可行?
if (Object.getOwnPropertyNames(d).length == 0) {
// object is empty
}
如果性能不是一个考虑因素,这是一种简单易记的方法:
JSON.stringify(obj) === '{}'
显然,您不希望在循环中对大型对象进行字符串化。
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;
}
}
);
check.emptyObject(d)
。 - mareoraftJSON.stringify({}).length -2 ? true : false
- Post Malone