JS Поиск профиля



  • Собственно застрял на данной задаче.

    // Инициализация
    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((contacts[i]['firstName'] == firstName) && (contacts[i].hasOwnProperty(prop)))  {
        return contacts[i][prop];
      } 
      
      else if(!(contacts[i].hasOwnProperty(prop))) {
        return 'No such property';
      }  
    }
      
      
    //  Измените код только над комментарием
    }
    
    // Измените значения аргументов для проверки
    lookUpProfile("Kristian", "lastName");
    

    Не могу понять, как проверить, что имя не содержится в [''firstName']. Если вставляю код if(contacts[i]['firstName'] != firstName) { return "No such contact"}; то проверку проходит один пункт(который ожидает, что вернется "No such contact"), но тогда не проходят проверку все остальные.


  • administrators

    @Kostya вы все правильно написали, осталось только учесть последний случай, когда ни одно условие в цикле не отработало и тогда нам надо вернуть "No such contact", так как такой контакт вообще не бы найден в массиве объектов.



  • @admin не могли бы Вы дать ссылку, где прочитать по этой теме? не пойму, как проверить, что ни одно условие цикла не отработало... Просто, если я добавляю проверку if(contacts[i]['firstName'] != firstName) { return 'No such contact' ; } - то у меня проходит проверку условие, которое оставалось последним, но все остальные тогда не проходят=( Вот я и не могу выбраться из замкнутого круга =\


  • administrators

    @Kostya прокоментировал функцию

    
    function lookUpProfile(firstName, prop){
      // перебираем массив с объектами и ищем совпадения при помощи условий
      for(var i = 0; i < contacts.length; i++) {
        
        if((contacts[i]['firstName'] == firstName) && (contacts[i].hasOwnProperty(prop))) {
          return contacts[i][prop];
        }
      else if(!(contacts[i].hasOwnProperty(prop))) {
        return 'No such property';
      }
    }
    // Если выполнение программы добралось до этого места, значит мы нечего не нашли,
    // так как в цикле мы перебрали все элементы.
    console.log("совпадений не было");
    }
    

    Осталось только правильно вернуть сообщение из функции, в случае, когда контакт не найден.



  • @admin емае, я столько времени ходил кругами получается=( я так понял, что в конце уже никакое условие не нужно и мы возвращаем 'No such contact'. Я то все пытался сделать условие =( Спасибо большое за помощь!



  • Большая просьба помочь разобраться, что не так с кодом:

    function lookUpProfile(firstName, prop){
    // Измените код только под комментарием
    for (var i=0;i<contacts.length;i++) {
    if ((contacts[i]["firstName"] === firstName)&&(contacts[i].hasOwnProperty(prop))) {
    return contacts[i][prop];
    }
    else if (contacts[i].hasOwnProperty(firstName)===false) {
    return "No such contact";
    }
    else if (contacts[i][firstName].hasOwnProperty(prop)===false) {
    return "No such property";
    }
    }
    // Измените код только над комментарием
    }



Похоже, подключение к Форум DoCode было разорвано, подождите, пока мы пытаемся восстановить соединение.