I have a function that checks to see whether or not a request has any queries, and does different actions based off that. Currently, I have if(query)
do this else something else. However, it seems that when there is no query data, I end up with a {}
JSON object. As such, I need to replace if(query)
with if(query.isEmpty())
or something of that sort. Can anybody explain how I could go about doing this in NodeJS? Does the V8 JSON object have any functionality of this sort?
You can use either of these functions:
// This should work in node.js and other ES5 compliant implementations.
function isEmptyObject(obj) {
return !Object.keys(obj).length;
}
// This should work both there and elsewhere.
function isEmptyObject(obj) {
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
return false;
}
}
return true;
}
Example usage:
if (isEmptyObject(query)) {
// There are no queries.
} else {
// There is at least one query,
// or at least the query object is not empty.
}
You can use this:
var isEmpty = function(obj) {
return Object.keys(obj).length === 0;
}
or this:
function isEmpty(obj) {
return !Object.keys(obj).length > 0;
}
You can also use this:
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return true;
}
If using underscore or jquery, you can use their isEmpty or isEmptyObject calls.
late in the game, but I am using another way which I like more even if it is not "proper" solution.
JSON.stringify(obj) === '{}'
I know this approach might get bad reviews because I am assuming that string representation of empty object is {}
( and what if it was { }
) - but I find it easier this way without a function and it seems to work fine for me.