" A"的值&安培; " B"平等"价值"然而," C"等于[object Object]
:
{
"A": "Value",
"B": "Value",
"C": {
"I": "Value",
"II": "Value"
}
}
我有一个循环,想要添加IF
来检查value
是否等于[object Object]
,即;内有多个字段。
实现这一目标的最佳方法是什么?
答案 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]"
。
注意:即使给定的值为string
,number
,boolean
或array
,也会有效。
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:)