错误说"对象为空"如果对象的属性为null

时间:2014-01-25 16:48:03

标签: javascript jquery

我在Javascript中有一个小问题,对象是以一种奇怪的(至少可以说是最少)方式处理的,除非我遗漏了什么。

我有一个名为state的对象。当我console.log(state)时,我得到了这个:

see image please

此时,我尝试使用jQuery的each

来浏览对象
$.each(state, function (i, sobj) {
        if(mid == sobj.user_id)
            //some stuff;
    });

但是,我在这里收到错误TypeError: sobj is null。我发现这是因为对象中的trump属性(见上图)初始化为null。任何其他价值,它都有效。显然我可以通过将其初始化为0或其他东西来解决这个问题,但这在概念层面上让我烦恼:为什么不允许其中一个属性将null作为其值?对我来说没有意义的是,当我像这样循环遍历它时,我应该得到一个错误,说整个对象为null,因为其中一个属性为null。我没有特意对该财产做任何事情。

那么,有人可以告诉我为什么会发生这种情况(谷歌没有帮助),除了显而易见的“不要让任何东西在对象中无效”之外,还有其他方法可以修复它吗?

2 个答案:

答案 0 :(得分:1)

你正在迭代整个对象,就像它是一个对象的集合 - 这意味着在这种情况下,特朗普是一个对象,而不是一个对象(状态)的属性。您需要仅对状态中的对象集合进行迭代,或者在查找属性值之前测试该对象是否为null:

if(typeof(sobj) != 'undefined'){
    if(mid == sobj.user_id)
            //some stuff;
}

答案 1 :(得分:1)

您似乎只想迭代state对象内的对象。您可以检查该项目是否为对象。

$.each(state, function (i, sobj) {
    if(typeof(sobj) == "object" && mid == sobj.user_id)
        //some stuff;
});