var friends = {};
friends.steve = {
firstName : "Steve",
lastName : "Jobs",
number: "(206) 555-5555",
address: ['One Microsoft Way','Redmond','WA','98052']
};
function list(obj) {
for(var key in obj) {
if(key instanceof Object == true) {
console.log(obj[key].join(", "));
} else {
console.log(obj[key]);
}
}
}
嗨,我想循环对象friends.steve和console.log它的每个属性,直到现在每件事都有效,但我想当我的代码到达我的friends.steve对象的地址数组时,它应该记录下来像“One Microsoft Way,Redmond,WA,98052”这样的地址数组而不是像数组一样,任何人都可以帮我解决这个问题。感谢
答案 0 :(得分:1)
obj[key]
。 key instanceof Object
将始终返回false。isArray()
或instancof Array
代替Object
。var friends = {};
friends.steve = {
firstName: "Steve",
lastName: "Jobs",
number: "(206) 555-5555",
address: ['One Microsoft Way', 'Redmond', 'WA', '98052']
};
list(friends.steve);
function list(obj) {
for (var key in obj) {
if (Array.isArray(obj[key])) { //Or if(obj[key] instanceof Array) {
console.log(obj[key].join(','));
} else {
console.log(obj[key]);
}
}
}
结果:
"Steve"
"Jobs"
"(206) 555-5555"
"One Microsoft Way,Redmond,WA,98052"
答案 1 :(得分:0)
您应该检查该值是否为对象。密钥永远是一个字符串。
if(obj[key] instanceof Object == true) {
也许也使用Array.isArray(obj[key])
。
答案 2 :(得分:0)
不要指望if (obj[key] instanceof Object) {
然而 - 你可以这样做:
for(var key in obj) {
if(key =='address') {
console.log(obj[key].join(", "));
} else {
console.log(obj[key]);
}
}
所以在你的例子中:
for(var key in friends.steve ) {
if(key =='address') {
console.log(friends.steve[key].join(", "));
} else {
console.log(friends.steve[key]);
}
}
结果:
Steve VM204:6
Jobs VM204:6
(206) 555-5555 VM204:6
One Microsoft Way, Redmond, WA, 98052