摘要:今天在第步上花了個多小時,好在最后完成了,現把問題和記錄下來。循環還要多多練習。前提是之前的判斷中的其他情況會
今天在 FreeCodeCamp 第215步上花了1個多小時,好在最后完成了,現把問題和code記錄下來。
題目:Profile Lookup
We have an array of objects representing different people in our contacts lists.
A lookUpProfile function that takes firstName and a property (prop) as arguments has been pre-written for you.
The function should check if firstName is an actual contact"s firstName and the given property (prop) is a property of that contact.
If both are true, then return the "value" of that property.
If firstName does not correspond to any contacts then return "No such contact"
If prop does not correspond to any valid properties then return "No such property"
</>復制代碼
//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"]
}
];
function lookUpProfile(firstName, prop){
// Only change code below this line
// Only change code above this line
}
// Change these values to test your function
lookUpProfile("Akira", "likes");
lookUpProfile("Kristian", "lastName");
lookUpProfile("Sherlock", "likes");
lookUpProfile("Harry", "likes");
lookUpProfile("Bob", "likes");
lookUpProfile("Bob", "address");
遇到問題:
一開始把firstName和prop的判斷寫在了一個for循環下,結果導致如果firstName不是在第一個object中,則直接返回"No such contact",不再繼續查找數組。
解決方法:先將所有firstName存入一個數組,判斷firstName是否存在,如果不存在,則直接返回"No such contact",如果存在,則再引入for循環,在for循環中判斷是否存在prop.
</>復制代碼
function lookUpProfile(firstName, prop){
// Only change code below this line
//將所有firstName存入數組
var storeFirstName = [];
for (var i = 0; i < contacts.length; i++){
storeFirstName.push(contacts[i].firstName);
}
//創建方法,用來判斷數組中是否存在某個值
function contains(arr, obj) {
var i = 0;
while (i < arr.length) {
if (arr[i] === obj) {
return true;
}
i++;
}
return false;
}
if (contains(storeFirstName, firstName))//firstName 存在于contacts中
{
for (var j = 0; j < contacts.length; j++){
if(contacts[j].firstName === firstName) { //找到目標firstName所在的object
if (contacts[j].hasOwnProperty(prop)){ //object中存在目標prop
return contacts[j][prop];
}
else {
return "No such property"; //object中不存在目標prop
}
}
}
}
else { //firstName 不存在于contacts中
return "No such contact";
}
// Only change code above this line
}
心得:
寫文章先在本地寫,然后再復制到網頁中(不小心按到返回,也是沒誰了,多花了20分鐘重寫)。
循環還要多多練習。
與object.hasOwnProperty不同,數組需要判斷是否存在值時,可引入 contains 方法:
</>復制代碼
function contains(arr, obj) {
var i = 0;
while (i < arr.length) {
if (arr[i] === obj) {
return true;
}
i++;
}
return false;
}
2017.02.14
How stupid am I !
今早起來才想起來,把return “No such contact”放在 for循環外,等for循環結束找不到firstName,會直接返回 “No such contact”.
</>復制代碼
function lookUpProfile(firstName, prop){
// Only change code below this line
for( var i = 0; i < contacts.length; i++) {
if(contacts[i].firstName === firstName) {
if(contacts[i].hasOwnProperty(prop)) {
return contacts[i][prop];
}
else {
return "No such property";
}
}
}
return "No such contact";
// Only change code above this line
}
nested 判斷中,最外部的判斷中false的情況,可以直接在最后。前提是之前的判斷中的其他情況會terminate function.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81499.html
摘要:我不是的深度用戶只是日常會遇到一些時間格式化的需求之前用的都是不過對的感到有些不舒服同事介紹過里邊用不可變數據的風格設計的所以就試試上星星很多請放心食用是項目的某個維護者開發的按照他個人想法進行了改進除了不可變性使用的工具做了更新也嘗試到時 我不是 Moment 的深度用戶, 只是日常會遇到一些時間格式化的需求,之前用的都是 Moment, 不過對 Moment 的 mutable A...
摘要:代碼注釋規范一語法注釋的說明語法寫在注釋塊第一行這是注釋的說明切換音頻播放狀態播放停止省略其它代碼標簽語法標簽的說明語法說明文字學生學生的名字類型語法可與標簽結合使用,如必傳參數可選參數語法可與標簽結合使用,如必傳參數可選參數參數有 Javascript 代碼注釋規范 一、語法 1. 注釋的說明 語法:寫在注釋塊第一行 /** * events-function(這是注釋的說明) ...
摘要:給初學者的印象總是那么的雜而亂,相信很多初學者都在找輕松學習的途徑。通常學了很久的基礎之后,變量函數對象你也都略知一二,但一到公司開發項目的時候,卻又難以下手。 Js給初學者的印象總是那么的雜而亂,相信很多初學者都在找輕松學習Js的途徑。在這里給大家總結一些學習Js的經驗,希望能給后來的學習者探索出一條輕松學習Js之路。Js給人那種感覺的原因多半是因為它如下的特點:A:本身知識很抽象、...
摘要:原始文檔在現在搬過來學習入門學習頁面之間的導航學習使用共享組件學習創建動態內容學習使用路由掩碼創建干凈的學習干凈的服務器支持學習獲取數據學習部署哪位分高的幫忙創建一個的標簽謝謝現暫時放在標簽下面了新建文章有時間限制一會全部發上來這是最近兩天 原始文檔在 https://github.com/developerw... 現在搬過來. 學習 Next.js: 入門學習 Next.js: ...
摘要:原始文檔在現在搬過來學習入門學習頁面之間的導航學習使用共享組件學習創建動態內容學習使用路由掩碼創建干凈的學習干凈的服務器支持學習獲取數據學習部署創建動態頁面現在我們知道了如何使用多個頁面創建一個基本的應用程序為了創建頁面我們需要在磁盤上創建 原始文檔在 https://github.com/developerw... 現在搬過來. 學習 Next.js: 入門學習 Next.js: ...
閱讀 2439·2021-11-22 13:53
閱讀 1132·2021-09-22 16:06
閱讀 1373·2021-09-02 15:21
閱讀 1905·2019-08-30 15:55
閱讀 3127·2019-08-29 11:19
閱讀 1923·2019-08-26 13:23
閱讀 941·2019-08-23 18:23
閱讀 1758·2019-08-23 16:06