У меня есть функция, которая проверяет, имеет ли запрос какие-либо запросы, и делает ли это разные действия. В настоящее время я if(query)
делаю это еще что-то еще. Однако, похоже, что когда нет данных запроса, в итоге я получаю объект {}
JSON. Поэтому мне нужно заменить if(query)
на if(query.isEmpty())
или что-то в этом роде. Может ли кто-нибудь объяснить, как я могу это сделать в NodeJS? Имеет ли объект V8 JSON какие-либо функциональные возможности этого типа?
Как проверить, что JSON пуст в NodeJS?
Ответ 1
Вы можете использовать любую из следующих функций:
// 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;
}
Пример использования:
if (isEmptyObject(query)) {
// There are no queries.
} else {
// There is at least one query,
// or at least the query object is not empty.
}
Ответ 2
Вы можете использовать это:
var isEmpty = function(obj) {
return Object.keys(obj).length === 0;
}
или это:
function isEmpty(obj) {
return !Object.keys(obj).length > 0;
}
Вы также можете использовать это:
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return true;
}
Если вы используете underscore или jQuery, вы можете использовать их isEmpty
или isEmptyObject
.
Ответ 3
в конце игры, но я использую другой способ, который мне больше нравится, даже если это не "правильное" решение.
JSON.stringify(obj) === '{}'
Я знаю, что этот подход может привести к плохим отзывам, потому что я предполагаю, что строковое представление пустого объекта {}
(и что если оно было { }
) - но мне легче это сделать без функции, и кажется, что работаю хорошо для меня.