如何在Javascript中匹配空字典?

时间:2011-05-20 13:27:56

标签: javascript dictionary match

从节点REPL中,

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

鉴于我有一个空字典,如何确保它是一个空字典?

10 个答案:

答案 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)

你必须检查它是'对象'类型,如下所示:

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

然后实现一个简短的'size'函数来检查它是否为空as mentioned here

答案 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;
        }
    }
);