2016-12-28 12 views
2

私は自分でJavaScriptを勉強しています。私はチュートリアルや書籍(Eloquentのような)や記事を読むことから始まりました。私はいくつかの無料コース、特に2つをやっています:freeCodeCampとCodeAcademy。このコードブロックについて教えてください。 (コンタクトリスト)

今日私はCodeAcademyの連絡先リストに挑戦しなければなりませんでした。いくつかのヒントの後

、これは私が思い付いた最終的なコードです:私はVaRの友人オブジェクトと第一の機能を理解

var friends = { 
 
    bill: { 
 
    firstName: "Bill", 
 
    lastName: "Gates", 
 
    number: "555 555 555", 
 
    address: ["One Miscrosoft Way", "Redmond", "WA", "98052"] 
 
    }, 
 
    steve: { 
 
    firstName: "Steve", 
 
    lastName: "Jobs", 
 
    number: "333 333 333", 
 
    address: ["Apple's street", "Silicon Valley", "SV", "87368"] 
 
    } 
 
}; 
 

 
var list = function(friends) { 
 
    for (var firstName in friends) { 
 
    console.log(firstName); 
 
    } 
 
}; 
 

 
var search = function(name) { 
 
    for (var key in friends) { 
 
    if (friends[key].firstName === name) { 
 
     console.log(friends[key]); 
 
     return friends[key]; 
 
    } 
 
    } 
 
}; 
 

 
list(friends); 
 
search("Steve");
.as-console-wrapper { max-height: 100% !important; top: 0; }

。 しかし、2番目の関数はどうですか?連絡先リストにない場合は、なぜ「名前」と「キー」単語を使用する必要がありますか。コードが実際に何をしているのか私に説明できますか?

はまた、運動の終わりに、CodeAcademyは、私が想像何かをするには、この最終的なコードを置く:

list(friends); 
search("Steve"); 

まさにそれは何ですか?

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function – mplungjan

+1

'function(name){}'を実行すると、 'name'は与えたパラメータを参照します。 'for(友人のvarキー) 'と同じです。ここでは、このループの各繰り返しで変化するvar 'key'を定義します。 また、オブジェクトを持つオブジェクトの代わりにオブジェクトの配列を使用すると、この演習はより効果的です。 javascriptの大括弧 '[]'と中括弧 '{}' – Flame

+2

'(友人のvarキー)の違いを調べる{' could be 'for(友人のvar友人){'それから 'friends {friend ] ' - ' name'が渡され、 "Steve"を含むキーであるため、var 'key'の名前を選択しました – mplungjan

答えて

0

var search = function(name) { 
    for (var key in friends) { 
     if (friends[key].firstName === name) { 
      console.log(friends[key]); 
      return friends[key]; 
     } 
    } 
}; 

変数keyは、最初の反復と2回目の「スティーブの「請求書」で、それは価値だ意味反復ごとにオブジェクトfriendsの各キーを指します。

nameはこの機能searchのパラメータであり、関数がsearch('Steve')のように実行されるまで、それは実際の値を持っていない、あなたはそれに値を代入'Steve'参照してください。

ので、list(friends)印刷 '法案' とコンソールの「スティーブ、およびsearch('Steve')は、このオブジェクトに印刷されます:

{ 
    firstName: "Steve", 
    lastName: "Jobs", 
    number: "333 333 333", 
    address: ["Apple's street", "Silicon Valley", "SV", "87368"] 
} 

をし、それを返します。

+0

ありがとう!たとえば、 'key'と' name'の代わりに他の用語を使いたいのであれば、それは同じだったでしょうか?今はそれが理にかなっています。 – Lewis

+0

ええ、あなたは 'key'と' name'の代わりに他の言葉を使うことができます、それは同じように動作します。 @ルイス –

0

参照:for...in loops

// basically the same thing as doing 
// function search(name){...} 
// this just creates a function in this scope 
var search = function(name) { 

    // for..in loop loops through the property 
    // names in the friends object 
    for (var key in friends) { 

     // "key" has the value of either "steve" or "bill" 
     // if key === steve then friends[key] is the same 
     // thing as doing friends.steve 

     // if friends.steve.firstName === name 
     if (friends[key].firstName === name) { 
      console.log(friends[key]); 
      return friends[key]; 
     } 
    } 
}; 
0

オーケー、あなたもオブジェクトである各「友人」を含むオブジェクトであるVARの友人を持っているので。内部のVaRの友人のそれらの個々の友人オブジェクトのそれぞれは、あなたがそれはそう迷子にされている場所です(最初の名前、姓、など)

var search = function(name) { 
    for (var key in friends) { 
     if (friends[key].firstName === name) { 
      console.log(friends[key]); 
      return friends[key]; 
     } 
    } 
}; 

プロパティが含まれます。さて、あなたは検索を作成し、それを関数に設定します。関数の内部では、ここで参照される名前を渡しますfriends[key].firstname === name。 [キー]は実際には「友人」のそれらの「友人」プロパティのそれぞれを参照しているので、billはキーの一例です。そこで、これらのキー(bill、steveなど)のそれぞれを調べ、先に渡された名前のファーストネームを設定します。だから、その機能を使用するときsearch("Steve");それは実際には、オブジェクトのリストで彼を見つけると、最初の名前のアドレスなどのような 'スティーブ'のすべてのプロパティを返します。

基本的にそれを要約する。関数内で渡される '名前'は 'friends'を通して検索することができ、[key]はforループが友人のすべてのキーを検索することを許可します。この機能ではまあ

関連する問題