2017-01-28 3 views
0

私は変数を保持する変数を通して反復する関数を記述しようとしています。オブジェクトプロパティであるファーストネームを渡すと、真実になるはずです。そうでなければ、あなたは間違っているはずです。しかし、私が何を関数に渡しても、私は常に偽になります。どんな助けでも大歓迎です。オブジェクトでif else文を使ってforループを使用しようとしています

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 attempt(firstName){ 
for(var i = 0;i < contacts.length; i++){ 
    if(contacts[i].firstName==firstName){ 
    return true; 
    } else { 
     return false; 
    } 
} 
} 
+1

この頻繁にそこに十分なことが起こる*それはそれのためのdupetargetする必要があります... –

+0

あなたの 'タイトル'は何も尋ねていないか、問題の発生。 – vsync

+0

サイドノート: 'if(a == b){trueを返します。 } else {return false; } '、停止し、' return a == b; 'と書く。 **まったく同じことをします**。 –

答えて

2

論理を一瞬考えてみましょう。最初のループはどうなりますか? if/elseに対応して関数は何をしますか?右!残りのエントリをまったくループせずにのすぐにtrueまたはfalseを返します。

あなたは完全にelseを削除し、にループをreturn falseを移動する必要があります。

function attempt(firstName) { 
    for (var i = 0; i < contacts.length; i++) { 
     if (contacts[i].firstName == firstName) { 
      return true; 
     } 
    } 
    return false; 
} 

サイドノート:Array#someは、まさにこのユースケースのために設計されています

function attempt(firstName) { 
    return contacts.some(function(entry) { 
     return entry.firstName == firstName; 
    }); 
} 
+0

@ibrahimmahrir - 「他の誰かが編集しました」という警告に注意して編集するときは注意してください。 –

+1

ええ。遅いネットワーク、それはポップアップさえしなかった。 –

+0

あなたは '==='を吹き飛ばすことを意味しましたか?それがなければ、あなたは '0'を渡して" "とマッチすることができるからです。それがその質問に記載されている意図であると想像するのは難しいです。 – pvg

関連する問題