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

How to determine if field value is an object?

本文关键字:对象 是否 何确定 字段      更新时间:2023-09-26

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

我需要循环浏览对象中的字段列表。我正在使用:

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

在preferences _data.person对象获得一个对象作为其中一个字段的值之前,它一直工作得很好。我希望能找到一种方法来检查该房产本身是否是一个对象,而不使用这些对象,或者找到一种更好的方法。

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

您可以为此使用typeof并检查它是否是对象。

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

您可以检查值是否为字符串/数字,而不是检查对象(可以是对象文字、数组和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 + '"]')

怎么样:

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

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

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

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