私は数分前にCodeacademyでJavaScriptを練習していましたが、何か紛らわしいことがわかりました。コードは次のとおりです。
var friends = {};
friends.bill = {
firstName: "Bill",
lastName: "Gates",
number: "(206) 555-5555",
address: ['One Microsoft Way','Redmond','WA','98052']
};
friends.steve = {
firstName: "Steve",
lastName: "Jobs",
number: "(408) 555-5555",
address: ['1 Infinite Loop','Cupertino','CA','95014']
};
var list = function(obj) {
for(var prop in obj) {
console.log(prop);
}
};
var search = function(name) {
for(var prop in friends) {
if(friends[prop].firstName === name) {
console.log(friends[prop]);
return friends[prop];
}
else {
return "contact not found";
}
}
};
list(friends);
search("Steve");
問題は、検索関数で文字列「Steve」を引数として渡すと、条件「Contact not found」が返されるのに対し、同じ検索関数で文字列「Bill」を引数として渡すと、連絡先。
そんなことがあるものか?私は何が間違っているのですか?
コードでは、ループの最初の反復で、prop
値はSteve
。以外の何かです。したがって、if
条件は失敗し、else
パーツに到達してcontact not found
すぐに戻ります。
ただし、このようにnot found
オブジェクトがfirstName
一致しない場合にのみメッセージを返す必要があります
function search(name) {
for (var prop in friends) {
if (friends[prop].firstName === name) {
return friends[prop];
}
}
return "contact not found";
};
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加