2014-01-14 16 views
0

'for in'循環僅限於顯示屬性名稱和它們的第一個值,還是有方法讓您在值內部看到?例如,使用for-in循環獲取特定屬性

如果我想檢查位於'favBooks'對象中'no1'對象內的'titles'屬性值,我可以使用for for循環嗎?

我是想這樣的事情:

var favBooks = { 
    no1:{Title:'Sidhartha',Author:'Hesse'}, 
    no2:{Title:'Cosmos',Author:'Sagan'}, 
    no3:{Title:'Idiot',Author:'Dostojevski'} 
} 

,然後調用只與標題爲:

for(t in favBooks) console.log(favBooks[t.title]); 

..但它返回undefined。

我知道還有其他方法可以做到這一點,但我的問題是:這是'for in'的限制 - 只返回屬性名稱和它們的第一個值,還是可以更深入一些屬性,如果是- 怎麼樣?

由於

+3

'產權工作不title'(資本)。 'favBooks [t.Title]''可以正常工作 –

+1

這個問題似乎是無關緊要的,因爲問題基本上是一個錯字。 –

+0

這不僅是一個錯字,問題是從對象訪問數據的方式。嘗試將'favBooks [t.title]'改爲'favBooks [t] .Title' –

回答

3
for(t in favBooks) console.log(favBooks[t].Title); 
+0

謝謝。有用.. – user3100459

1

的問題是在該行 的console.log(favBooks [t.title]);`

除了有 「標題」,而不是 「標題」(JavaScript是區分大小寫),屬性「標題」不是對象favBook的索引。你也許可以用favBooks索引呢[「NO1」(我haveb't試過了),但你肯定可以與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文件或一個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 
} 
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-