2017-02-21 2 views
1

Я нахожусь на freecodecamp.com и застрял в проблеме поиска профиля. Что мне здесь не хватает? может ли кто-нибудь указать мне? Если я прокомментирую эту ситуацию firstName == contacts[i].firstName, она возвращается 4 раза Нет такого контакта & 1 раз Нет такого имущества что я делаю неправильно?Javascript object proccesing confusion

Прецеденты:

- "Kristian", "lastName" should return "Vos" 
- "Sherlock", "likes" should return ["Intriguing Cases", "Violin"] 
- "Harry","likes" should return an array 
- "Bob", "number" should return "No such contact" //**fails** 
- "Akira","address" should return "No such property" 

    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){ 
     // Only change code below this line 
     for(var i = 0; i< contacts.length;i++){ 

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

      return contacts[i][prop]; 
     } 

     /*if(firstName == contacts[i].firstName){ 
      return "No such contact" ; 
     }*/ 

     if(contacts[i].hasOwnProperty(prop) === false){ 
      return "No such property"; 
     } 

     } 
     } 

     //test strings 
     console.log(lookUpProfile("Kristian", "lastName")); 
     console.log(lookUpProfile("Sherlock", "likes")); 
     console.log(lookUpProfile("Harry", "likes")); 
     console.log(lookUpProfile("Bob", "number")); 
     console.log(lookUpProfile("Akira", "address")); 
+1

просто неуместны геЬигп – Coder

ответ

1

Вы можете переместить

return "No such contact"; 

до конца функции, потому что все проверки имели место, и есть что-то ценное, возвращенное. Но если нет, то контакт не находится в массиве.

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++) { 
 
     if (firstName == contacts[i].firstName && contacts[i].hasOwnProperty(prop)) { 
 
      return contacts[i][prop]; 
 
     } 
 
     if (!contacts[i].hasOwnProperty(prop)) { 
 
      return "No such property"; 
 
     } 
 
    } 
 
    return "No such contact"; // move to the end of the function 
 
} 
 

 
//test strings 
 
console.log(lookUpProfile("Kristian", "lastName")); 
 
console.log(lookUpProfile("Sherlock", "likes")); 
 
console.log(lookUpProfile("Harry", "likes")); 
 
console.log(lookUpProfile("Bob", "number")); 
 
console.log(lookUpProfile("Akira", "address"));
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

вы сделали мои day..thanks. –