| 
									
										
										
										
											2021-05-05 10:13:49 -07:00
										 |  |  | --- | 
					
						
							|  |  |  | id: 5688e62ea601b2482ff8422b | 
					
						
							|  |  |  | title: 資料查找 | 
					
						
							|  |  |  | challengeType: 1 | 
					
						
							|  |  |  | videoUrl: 'https://scrimba.com/c/cDqW2Cg' | 
					
						
							|  |  |  | forumTopicId: 18259 | 
					
						
							|  |  |  | dashedName: profile-lookup | 
					
						
							|  |  |  | --- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # --description--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 我們有一個對象數組,裏面存儲着通訊錄。 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | `lookUpProfile` 函數已經寫好了參數,需要 `name` 和屬性 (`prop`) 參數。 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 函數將會檢查通訊錄中是否存在一個 `firstName` 與傳入的 `name` 相同的聯繫人。 如果存在,那麼還需要檢查對應的聯繫人中是否存在 `prop` 屬性。 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 如果它們都存在,函數返回 prop 屬性對應的值。 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 如果 `name` 不對應於任何聯繫人,然後返回字符串 `No such contact`。 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 如果 `prop` 屬性在匹配 `name` 的聯繫人裏不存在,返回 `No such property`。 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # --hints--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | `lookUpProfile("Kristian", "lastName")` 應該返回字符串 `Vos` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | assert(lookUpProfile('Kristian', 'lastName') === 'Vos'); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | `lookUpProfile("Sherlock", "likes")` 應該返回 `["Intriguing Cases", "Violin"]` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | assert.deepEqual(lookUpProfile('Sherlock', 'likes'), [ | 
					
						
							|  |  |  |   'Intriguing Cases', | 
					
						
							|  |  |  |   'Violin' | 
					
						
							|  |  |  | ]); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | `lookUpProfile("Harry", "likes")` 應該返回一個數組 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | assert(typeof lookUpProfile('Harry', 'likes') === 'object'); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | `lookUpProfile("Bob", "number")` 應該返回字符串 `No such contact` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | assert(lookUpProfile('Bob', 'number') === 'No such contact'); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | `lookUpProfile("Bob", "potato")` 應該返回字符串 `No such contact` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | assert(lookUpProfile('Bob', 'potato') === 'No such contact'); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | `lookUpProfile("Akira", "address")` 應該返回字符串 `No such property` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | assert(lookUpProfile('Akira', 'address') === 'No such property'); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # --seed--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## --seed-contents--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | // Setup | 
					
						
							|  |  |  | var contacts = [ | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         "firstName": "Akira", | 
					
						
							|  |  |  |         "lastName": "Laine", | 
					
						
							|  |  |  |         "number": "0543236543", | 
					
						
							|  |  |  |         "likes": ["Pizza", "Coding", "Brownie Points"] | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         "firstName": "Harry", | 
					
						
							|  |  |  |         "lastName": "Potter", | 
					
						
							|  |  |  |         "number": "0994372684", | 
					
						
							|  |  |  |         "likes": ["Hogwarts", "Magic", "Hagrid"] | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         "firstName": "Sherlock", | 
					
						
							|  |  |  |         "lastName": "Holmes", | 
					
						
							|  |  |  |         "number": "0487345643", | 
					
						
							|  |  |  |         "likes": ["Intriguing Cases", "Violin"] | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         "firstName": "Kristian", | 
					
						
							|  |  |  |         "lastName": "Vos", | 
					
						
							|  |  |  |         "number": "unknown", | 
					
						
							|  |  |  |         "likes": ["JavaScript", "Gaming", "Foxes"] | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-17 23:49:01 +09:00
										 |  |  | function lookUpProfile(name, prop) { | 
					
						
							|  |  |  |   // Only change code below this line | 
					
						
							| 
									
										
										
										
											2021-05-05 10:13:49 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-17 23:49:01 +09:00
										 |  |  |   // Only change code above this line | 
					
						
							| 
									
										
										
										
											2021-05-05 10:13:49 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | lookUpProfile("Akira", "likes"); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # --solutions--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | var contacts = [ | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         "firstName": "Akira", | 
					
						
							|  |  |  |         "lastName": "Laine", | 
					
						
							|  |  |  |         "number": "0543236543", | 
					
						
							|  |  |  |         "likes": ["Pizza", "Coding", "Brownie Points"] | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         "firstName": "Harry", | 
					
						
							|  |  |  |         "lastName": "Potter", | 
					
						
							|  |  |  |         "number": "0994372684", | 
					
						
							|  |  |  |         "likes": ["Hogwarts", "Magic", "Hagrid"] | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         "firstName": "Sherlock", | 
					
						
							|  |  |  |         "lastName": "Holmes", | 
					
						
							|  |  |  |         "number": "0487345643", | 
					
						
							|  |  |  |         "likes": ["Intriguing Cases", "Violin"] | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         "firstName": "Kristian", | 
					
						
							|  |  |  |         "lastName": "Vos", | 
					
						
							|  |  |  |         "number": "unknown", | 
					
						
							|  |  |  |         "likes": ["JavaScript", "Gaming", "Foxes"] | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //Write your function in between these comments | 
					
						
							|  |  |  | function lookUpProfile(name, prop){ | 
					
						
							|  |  |  |     for(var i in contacts){ | 
					
						
							|  |  |  |       if(contacts[i].firstName === name) { | 
					
						
							|  |  |  |         return contacts[i][prop] || "No such property"; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |    return "No such contact"; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | //Write your function in between these comments | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | lookUpProfile("Akira", "likes"); | 
					
						
							|  |  |  | ``` |