Подтвердить что ты не робот

Как сопоставить пустой словарь в Javascript?

Из node REPL,

> d = {}
{}
> d === {}
false
> d == {}
false

Учитывая, что у меня есть пустой словарь, как я могу убедиться, что это пустой словарь?

4b9b3361

Ответ 1

function isEmpty(obj) {
  return Object.keys(obj).length === 0;
}

Ответ 2

Вы можете расширить Object.prototype с помощью этого метода isEmpty, чтобы проверить, не имеет ли объект собственные свойства:

Object.prototype.isEmpty = function() {
    for (var prop in this) if (this.hasOwnProperty(prop)) return false;
    return true;
};

Ответ 3

Поскольку у него нет атрибутов, цикл for не будет иметь ничего, чтобы перебирать. Чтобы отдать должное, я нашел это предложение здесь.

function isEmpty(ob){
   for(var i in ob){ return false;}
  return true;
}

isEmpty({a:1}) // false
isEmpty({}) // true

Ответ 4

Это то, что использует jQuery, работает отлично. Хотя это требует, чтобы jQuery script использовал 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

Как насчет использования jQuery?

$.isEmptyObject(d)

Ответ 6

Я далек от ученого JavaScript, но выполняет ли следующая работа?

if (Object.getOwnPropertyNames(d).length == 0) {
   // object is empty
}

Преимущество состоит в том, чтобы быть единственным вызовом функции чистой линии.

Ответ 7

Вам нужно будет проверить, что он имеет тип "объект":

(typeof(d) === 'object')

И затем реализуйте короткую "размерную" функцию, чтобы проверить ее пустым, как указано здесь.

Ответ 8

var SomeDictionary = {};
if(jQuery.isEmptyObject(SomeDictionary))
// Write some code for dictionary is empty condition
else
// Write some code for dictionary not empty condition

Это прекрасно работает.

Ответ 9

Если вы попробуете это на Node.js, используйте этот фрагмент, основываясь на этом коде здесь

Object.defineProperty(Object.prototype, "isEmpty", {
    enumerable: false,
    value: function() {
            for (var prop in this) if (this.hasOwnProperty(prop)) return false;
            return true;
        }
    }
);

Ответ 10

Если производительность не является соображением, это простой способ, который легко запомнить:

JSON.stringify(obj) === '{}'

Очевидно, вы не хотите, чтобы были строгие объекты в цикле.