从节点REPL中,
> d = {}
{}
> d === {}
false
> d == {}
false
鉴于我有一个空字典,如何确保它是一个空字典?
答案 0 :(得分:68)
function isEmpty(obj) {
return Object.keys(obj).length === 0;
}
答案 1 :(得分:19)
您可以使用此Object.prototype
方法扩展isEmpty
以检查对象是否没有自己的属性:
Object.prototype.isEmpty = function() {
for (var prop in this) if (this.hasOwnProperty(prop)) return false;
return true;
};
答案 2 :(得分:11)
如何使用jQuery?
$.isEmptyObject(d)
答案 3 :(得分:10)
由于它没有属性,for
循环将无法迭代任何内容。为了给予应有的信用,我发现了这个建议here。
function isEmpty(ob){
for(var i in ob){ return false;}
return true;
}
isEmpty({a:1}) // false
isEmpty({}) // true
答案 4 :(得分:9)
这是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
答案 5 :(得分:3)
我远离JavaScript学者,但是做了以下工作吗?
if (Object.getOwnPropertyNames(d).length == 0) {
// object is empty
}
它具有一行纯函数调用的优点。
答案 6 :(得分:1)
答案 7 :(得分:1)
var SomeDictionary = {};
if(jQuery.isEmptyObject(SomeDictionary))
// Write some code for dictionary is empty condition
else
// Write some code for dictionary not empty condition
这很好。
答案 8 :(得分:1)
如果不考虑表现,这是一个容易记住的简单方法:
/* POST /todos */
router.post('/', function(req, res, next) {
req.body.completed = (req.body.completed === 'true');
Todo.create(req.body, function (err, post) {
if (err) return next(err);
res.json(post);
});
});
显然,你并不想在循环中对大型对象进行字符串化。
答案 9 :(得分:0)
如果您在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;
}
}
);