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"), но тогда не проходят проверку все остальные.
-
@Kostya вы все правильно написали, осталось только учесть последний случай, когда ни одно условие в цикле не отработало и тогда нам надо вернуть "No such contact", так как такой контакт вообще не бы найден в массиве объектов.
-
@admin не могли бы Вы дать ссылку, где прочитать по этой теме? не пойму, как проверить, что ни одно условие цикла не отработало... Просто, если я добавляю проверку if(contacts[i]['firstName'] != firstName) { return 'No such contact' ; } - то у меня проходит проверку условие, которое оставалось последним, но все остальные тогда не проходят=( Вот я и не могу выбраться из замкнутого круга =\
-
@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";
}
}
// Измените код только над комментарием
}
-
else if (contacts[i].hasOwnProperty(firstName)===false) {
return "No such contact";
} здесь вы проверяете есть ли свойство firstName у объектов массива, а оно есть у всех, поэтому надо проверить равенство свойтва firstName переданного и данного, как мне кажется, ошибка в этом)
-
Вот готовое, можно было короче, но опыта маловато ;)
// Инициализация 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][prop]!==undefined)) { return contacts[i][prop]; } else if ((firstName===contacts[i].firstName) && (contacts[i][prop]===undefined)) { return "No such property"; } } if (firstName!==contacts.firstName){ return "No such contact"; } // Измените код только над комментарием } // Измените значения аргументов для проверки lookUpProfile("Akira", "likes");