2016-04-13 5 views
0

は、私は以下のコードが正しいと思う:firstNameのは、実際の接触のfirstNameので、与えられたプロパティは(小道具)その連絡先のプロパティの場合ネストループはJavaScriptで

機能を確認する必要があります。

両方が真の場合、そのプロパティの「値」を返します。

引数 "Kristian"と "lastName"を使用して関数lookUpProfileを呼び出すと、値 "Vos"が返されますが、そうではありません。

いくつかのアイデアは間違っていますか?

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){ 
 

 
    for(var i=0;i<contacts.length;i++){ 
 
     for(var j=0;j<contacts[i].length;j++){ 
 
      if(contacts[i][0]===firstName && contacts[i][j].hasOwnProperty(prop)){ 
 
        return contacts[i][j]; 
 
        } 
 
      } 
 
     } 
 
    } 
 

 

 

 
// Change these values to test your function 
 
lookUpProfile("Kristian", "lastName");

+0

'用(VAR jを= 0; – Scimonster

答えて

0

あなたのコードの問題は、2番目のforループは、単に存在しないプロパティcontacts[i].lengthをチェックされていることです。オブジェクトには.lengthプロパティはなく、配列のみです。

すべてのプロパティを循環させるのに2回目のループは必要ありません。firstNameをチェックして、必要なプロパティがあるかどうかを確認してから返すことができます。

for(var i=0;i<contacts.length;i++){ if(contacts[i]['firstName']===firstName && contacts[i].hasOwnProperty(prop)){ return contacts[i][prop]; } }

あなたが望むものであるべき。

for(var key in contacts[i]){ //place your check here using contacts[i][key] the get the value for the key }

編集:あなたはサイクルにすべてのオブジェクトのプロパティを使用する場合は


は、あなたがこのようなfor inループを使用する必要がありますfor in例を追加しました

+0

はい、私はオブジェクトの配列の代わりにサブ配列を持つ配列のように扱いました。とにかく、あなたの最初のコードは良いですが、どちらも動作しません。 – user1881983

+0

ここをクリックしてください.http://jsbin.com/kebenabezu/edit?js、console コンソールパネルで機能を呼び出してみてください –

+0

申し訳ありません。はい、うまくいきます。何が起こったのは、freeCodeCampのタスクとして、間違っていた別の2つの条件があったということです。これらの最後のものが適切にコーディングされると、すべてのコードが正常に動作します。 – user1881983

関連する問題