JavaScript如果数组值等于对象

时间:2017-04-15 19:34:24

标签: javascript

" A"的值&安培; " B"平等"价值"然而," C"等于[object Object]

{
    "A": "Value",
    "B": "Value",
    "C": {
        "I": "Value",
        "II": "Value"
    }
}

我有一个循环,想要添加IF来检查value是否等于[object Object],即;内有多个字段。

实现这一目标的最佳方法是什么?

4 个答案:

答案 0 :(得分:2)

最简单的方法是使用typeof x,其中x是你要检查的内容。对于" A"和" B"它将是" string"并为" C"它将是"对象"。

答案 1 :(得分:1)

在MDN上查看此页面:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof

它描述了typeof运算符。

if(typeof obj === 'object')
{
    ...
}
else if(typeof obj === 'string')
{
    ...
}

答案 2 :(得分:1)

您可以将每个值转换为string .toString()函数并检查结果。如果给定的值是一个对象 - 嵌套,单个甚至是空 - 它将返回"[object Object]"

注意:即使给定的值为stringnumberbooleanarray,也会有效。



var obj = {
    "A": "Value",
    "B": true,
    "C": {
        "I": "Value",
        "II": "Value",
        "III": {foo: 'bar'},
        "IV": {},
        "V": 'foo'
    },
    "D": 24,
    "E": ['hi']
};

for (var key in obj) {
  if (obj[key].toString() != "[object Object]" ) {
    console.log(obj[key]);
  } else {
    console.log("It's an object");
  }
}




答案 3 :(得分:0)

   let test = {
      "first": "fetr",
      "second": {
        "edwr":12,
        "ewrgtr":32
      }
    };

    Object.keys(test).forEach(function (key) {
      if(typeof test[key] === 'object'){
        console.log(key,test[key]);
      }
    });

这适用于ECMAscript 5:)