如何确定字段值是否为对象?

时间:2013-06-28 20:39:53

标签: javascript jquery

如果在我道歉之前已经问过这个问题。我找不到了。

我需要遍历对象中的字段列表。我正在使用:

for (var property in preferences_data.person){
    $("div.item form[name=" + property + "]").addClass('active');   
}

在preferences_data.person对象获取一个对象作为其中一个字段的值之前,哪个工作得很好。我希望找到一种方法来检查属性是否是一个对象本身而不是使用它们,或者更好的方式。

6 个答案:

答案 0 :(得分:5)

if (typeof preferences_data.person[property] === "object")

答案 1 :(得分:2)

你可以使用typeof来检查它是否是一个对象。

for (var property in preferences_data.person){
   if (typeof property !== 'object') {
      $("div.item form[name=" + property + "]").addClass('active');
   } else {
      //do something else
   }  
}

答案 2 :(得分:2)

您可以检查该值是否为字符串/数字,而不是检查对象(可以是对象文字,数组和null),例如:

for (var property in preferences_data.person) {
    var cur = preferences_data.person[property];
    if (typeof cur === "string" || typeof cur === "number") {
        $("div.item form[name=" + property + "]").addClass('active');
    }
}

当然,如果您仍想检查对象,可以使用以下方法过滤掉数组和null

var theType = Object.prototype.toString.call(obj);
然后

theType将是“[object Object]”,“[object Array]”或“[object Null]”(可能是其他的)。因此,您可以使用这些内容和/或!== null来检查null

另请注意,值中的字符可能会破坏属性选择器 - 您应该始终在选择器中引用值 。所以将选择器更改为:

$('div.item form[name="' + property + '"]')

答案 3 :(得分:1)

怎么样:

(typeof property == "object")

for (var property in preferences_data.person){
     if(typeof(property) != "object")    {
          $("div.item form[name=" + property + "]").addClass('active');   
     }
}

答案 4 :(得分:0)

尝试使用typeof preferences_data.person[property] === 'object'

答案 5 :(得分:0)

您可以使用typeof运算符来检查属性是否为字符串:

 for (var property in preferences_data.person){
    if (typeof property === "string") {
        $("div.item form[name=" + property + "]").addClass('active');
    }
 }