2016-07-03 5 views
0

프로필 조회로 작업을 시도합니다. 그것은 소품을 검색하고 자신의 가치를 반환해야합니다. 그리고 나서 "아니오 그러한 연락처"또는 "아니오 속성"의존 조건에서 마지막 조건 (다른 성명) 수행하지 않는 이유를 이해가 안 돼요. 여기에 코드가 있습니다.루프가있는 작업이 멈추었습니다

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) { 
    var i = 0; 
    while (contacts[i]) { 
     if (contacts[i].firstName === firstName && contacts[i].hasOwnProperty(prop)) { 
      return contacts[i][prop]; 

     } 
     i++; 
    } 
    if (!contacts.firstName) { 
     return "No such contact"; 
    } 
    else { 
     return "No such property"; 
    } 

} 

lookUpProfile("Akira", "address");` 

"No such property"를 반환해야하지만 "No contact"를 반환합니다.

+1

'연락처'에 대한 플래그 (부울) 필요한 것은 배열과 'firstName을'을하지 않았습니다! – MHS

답변

0

이름이 있으면 플래그를 저장하여 저장할 수 있습니다. 과 같이 :

function lookUpProfile(firstName, prop) { 
    var i = 0; 
    var nameflag = false; 
    while (contacts[i]) { 
     if (contacts[i].firstName === firstName && contacts[i].hasOwnProperty(prop)) { 
      return contacts[i][prop]; 
     } 
     if (contacts[i].firstName == firstname) 
      nameflag = true; 
     i++; 
    } 
    if (!nameflag) { 
     return "No such contact"; 
    } 
    else { 
     return "No such property"; 
    } 

} 
0

if (!contacts.firstName)이이 기능은 내가 No such property을 반환 스크립트를 업데이트 한

function lookUpProfile(firstName, prop){ 
var i = 0; 
var a; 
while(contacts[i]) { 

if (contacts[i]["firstName"] === firstName && contacts[i].hasOwnProperty(prop))  { 
    return contacts[i][prop]; 

} 
else if (contacts[i]["firstName"] != firstName) { 
    a = "No Contact"; 
} else { 
    a= "No property"; 
    return a; 
} 

i++; 
} 
return a; 

} 
+0

댓글에 대신 포함되어야합니다. – nmnsud

0

거짓입니다.

function lookUpProfile(firstName, prop){ 
    var i = 0, index = 0; 
    while(i < contacts.length) { 
     if (contacts[i].firstName == firstName) { 
      index++; 
     } 
     i++; 
    } 
    if (index > 0) { 
     if (!contacts[index][prop]) { 
      return "No such property"; 
     } 
    } else { 
     return "No such contact"; 
    } 
} 
console.log(lookUpProfile("Akira", "address")); //Output: No such property 
console.log(lookUpProfile("John", "address")); //Output: No such contacts 

호프가 잘 작동합니다.

0

을 보는 방법을 항상

1

당신 수있는 contacts을 반복하고 이름을 일치하는 연락처가 발견되면, 당신은 필수 속성 중 하나 값 또는 "아니오 같은 속성을"반환합니다. 루프가 값을 반환하지 않고 끝나면 해당 연락처를 찾을 수 없음을 의미합니다.

function lookUpProfile(firstName, prop) { 
    var i = 0, 
     contact; 
    for(i = 0; i< contacts.length; i++) { 
     contact = contacts[i]; 
     if(contact.firstName === firstName) { 
     return contact.hasOwnProperty(prop) ? contact[prop] : "No such property"; 
     } 
    } 
    return "No such contact"; 
} 

JSBin :https://jsbin.com/pobunavacu/edit?js,console

편집 : (ES6 버전) 당신이 더 IE 나 오페라와 통제 된 환경에 대한 코드를 작성하는 경우

, 당신은 ES6의 기능을 더욱 쉽게 그것을 할 수 있습니다 자바 스크립트 (Chrome, Firefox 및 NodeJS에서 테스트 됨) :

function lookUpProfile(firstName, prop) { 
    return (contacts.find(contact => contact.firstName === firstName) || {[prop]: "No such contact"})[prop] || "No such property"; 
} 
0

당신이 당신의 문제

function lookUpProfile(firstName, prop) { 
var contactExist = false; 
var i = 0; 
while (contacts[i]) { 
    if (contacts[i].firstName === firstName) { 
     if (contacts[i].hasOwnProperty(prop)) { 
      return contacts[i][prop]; 
     } else { 
      contactExist = true; 
      break; 
     } 
    } 
    i++; 
} 

if (!contactExist) { 
    return "No such contact"; 
} 
else { 
    return "No such property"; 
} 

}

관련 문제