Почему такой код не работает? Логика - сначало проверить на отсутствие свойства с именем атрибута name. Если иначе - выполняется else if (изначально я вообще хотел там написать просто contacts[i].hasOwnProperty(prop) без && и проверки на наличие свайства с именем атрибута name). В этом коде почему-то работает только return "No such contact" и return "No such property". function lookUpProfile(name, prop) { for (let i = 0; i < contacts.length; i++) { if (contacts[i].firstName != name) { return "No such contact"; } else if (contacts[i].firstName == name && contacts[i].hasOwnProperty(prop)) { return contacts[i][prop]; } else return "No such property"; } } И еще хотел спросить: Так что в итоге находиться тут в переменной item: const item = contacts.find(n => n.firstName === name)? И что подставляется в переменную n? В n - gоочередно каждый объект массива contacts (которых по сути 4)? А item - становится найденным объектом (то есть при name "Akira" как я понял - это будет первый объект нашей базы данных, которая в массиве)? И уже там, внутри первого объекта, который занял переменную item мы начинаем искать prop далее через if'ы? И если это так, то как сделать аналогичную вещь, которая бы искала значение во внутренних массивах? Например если бы name было массивом, то как сделать такой find? const item = contacts.find(n => n.likes === name) - Так что ли? Вот что я имею ввиду. Но почему-то это не работает. let x = ["Pizza", "Coding", "Brownie Points"];
function lookUpProfile(name) { var contact = contacts.find(item => item.likes == name); if (contact) { return contact; } return "Dont work"; } console.log(lookUpProfile(x)); А это работает: let x = "Akira";
function lookUpProfile(name) { var contact = contacts.find(item => item.firstName == name); if (contact) { return contact; } return "Dont work"; } console.log(lookUpProfile(x));