2014-01-17 52 views
0

只是在練習中尋找對一些事情的虛擬解釋,我並沒有完全理解它。關於搜索對象的搜索功能的說明和指導

我已經創建了一個對象,具有兩個條目這裏:

var friends = { 
    bill: { 
     firstName: "Bill", 
     lastName: "Gates", 
     number: "(206) 555-5555", 
     address: ['One Microsoft Way','Redmond','WA','98052'] 
    }, 

    steve: { 
     firstName: "Steve", 
     lastName: "Jobs", 
     number: "(292) 676- 3434", 
     address: ['One Microsoft way',' Redmond', 'WA', '98052'] 
    } 
}; 

我明白這一點完全,我只是把它作爲序言,所以你明白我的搜索功能。

我有兩個功能,我希望有人會用虛假的術語解釋。第一個:

var list = function(friends) { 

for (var key in friends) { 

    console.log(key); 
} 
}; 

我明白有點 - 我設法讓它工作,但我不認爲我完全理解它爲什麼工作。這是一個正在查看朋友對象的功能嗎?與該部分function(friends)然後for循環,循環通過我的對象中的條目並將密鑰記錄到控制檯。其中顯示比爾和史蒂夫。

我不明白的是如何知道(var key in friends)循環並存儲對象的兩個元素?它是否僅僅是該函數的一個保持變量,並且因爲我正在定義function(friends)它只是查找對象的父元素?

其次這個功能:

var search = function(name) { 

    for (var key in friends) { 

     console.log... 

    } 
    }; 

我試圖登錄到控制檯的對象兩個父元素的子元素。所以billName和steve的名字,姓氏,號碼,地址。

我不確定將這些記錄到控制檯的格式,我試過console.log(friends[bill]);,但我不認爲這是正確的語法。

任何指導將是偉大的 - 認爲我有點接近。

回答

0

如果對象是JSON則環路將超過的鑰匙,而不是說陣列這將是該陣列的索引,嘗試在JavaScript以下

console.log(friends[key]); 
0

對象是鍵 - 值對的集合。您的friends對象是一個包含2個鍵值對的集合。集合中的兩個鍵是billsteve。這兩個值中的每一個都是具有4個鍵值對的對象:firstName - > Bill等

第一個函數list是一個函數,它接受任何對象作爲參數並記錄其所有密鑰。它需要什麼對象取決於你所說的。參數名稱爲friends並與您的變量名稱完全相同的事實純屬巧合。

對於第二個函數,您需要嵌套for循環。如果沒有的功能,你會做這樣的事情:

for (var name in friends) { 
    for (var innerKey in friends[name]) { 
    console.log(name, innerKey, friends[name][innerKey]); 
    } 
} 

有了你已經寫的功能,list,你可以做這樣的事情:

var showNested = function(object) { 
    for (var name in object) { 
    console.log('Information for ', name); 
    list(object[name]; 
    } 
} 

// Usage: 
showNested(friends);