我在Javascript中有一个小问题,对象是以一种奇怪的(至少可以说是最少)方式处理的,除非我遗漏了什么。
我有一个名为state
的对象。当我console.log(state)
时,我得到了这个:
此时,我尝试使用jQuery的each
:
$.each(state, function (i, sobj) {
if(mid == sobj.user_id)
//some stuff;
});
但是,我在这里收到错误TypeError: sobj is null
。我发现这是因为对象中的trump
属性(见上图)初始化为null
。任何其他价值,它都有效。显然我可以通过将其初始化为0或其他东西来解决这个问题,但这在概念层面上让我烦恼:为什么不允许其中一个属性将null
作为其值?对我来说没有意义的是,当我像这样循环遍历它时,我应该得到一个错误,说整个对象为null,因为其中一个属性为null。我没有特意对该财产做任何事情。
那么,有人可以告诉我为什么会发生这种情况(谷歌没有帮助),除了显而易见的“不要让任何东西在对象中无效”之外,还有其他方法可以修复它吗?
答案 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;
});