'for in'循环是仅限于显示属性名称及其第一个值,还是有一种方法可以在其值内查看?例如,
如果我想检查'no1'对象里面的'titles'属性值,它位于'favBooks'对象中,我可以用for循环吗?
我正在尝试这样的事情:
var favBooks = {
no1:{Title:'Sidhartha',Author:'Hesse'},
no2:{Title:'Cosmos',Author:'Sagan'},
no3:{Title:'Idiot',Author:'Dostojevski'}
}
然后只调用with中的标题:
for(t in favBooks) console.log(favBooks[t.title]);
..但它返回undefined。
我知道还有其他方法可以做到这一点,但我的问题是:这是'for in'的限制 - 只返回属性名称及其第一个值,或者你可以深入了解属性,如果是 - 怎么样?
由于
答案 0 :(得分:3)
for(t in favBooks) console.log(favBooks[t].Title);
答案 1 :(得分:1)
问题在于 的console.log(favBooks [t.title]);`
除了具有“title”而不是“Title”(javascript区分大小写)之外,属性“Title”不是对象favBooks的索引。您可以使用favBooks [“no1”]对其进行索引(我没有尝试过),但你绝对可以使用favBooks.no1
例如
favBooks.no1.Title would be "Sidhartha".
所以我认为最后一行应该是:
for(t in favBooks) console.log(favBooks[t].Title); // logs the Title property
下面的函数运行一个javascript对象,并对其进行字符串表示。如果您提醒结果,它将显示对象的结构。 它还用
遍历对象for (X in el)
其中el是任何对象 - 无论是html doc中的DIV元素还是{a:b,c:d}类型对象。
或许这会有所帮助吗?function dump(el) {
var s=""; //
for (X in el) {
if (el[X]) {var sX=el[X].toString(); s+=X+": "+el[X] + "<br>\n"}
}
return s
}
答案 2 :(得分:1)
也许你想要更接近PHP foreach ($array as $key => $value)
的东西:
var favBooks = [ // <-- note this is now an array
{Title:'Sidhartha',Author:'Hesse'},
{Title:'Cosmos',Author:'Sagan'},
{Title:'Idiot',Author:'Dostojevski'}
]
favBooks.forEach (function(elt){ console.log (elt.Title); })
请注意这不适用于IE8 -