Почему такой код не работает? Логика - сначало проверить на отсутствие свойства с именем атрибута 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));
Вы имеете ввиду квадратные скобки? ' и " - это кавычки, а [] - это квадратные скобки.
Не вижу вашего примера как именно вы пытаетесь что делать, но предположу, что вы запутались со случаями использования переменных. К примеру, есть объект:
const artists = { Jon: { albums: ["one", "two"] }, Anna: { albums: ["three", "four"] }, name: { albums: ["five", "six"] }, }
Если вы оперируете самими именами свойств, то да, можете обратиться к свойствам без скобок, например
artists.Jon.albums
Но, если вы хотите использовать переменную с именем, то тут только через квадратные скобки. Например
const name = "Jon" artists[name].albums

Здесь вы получите ["one", "two"], потому что фактически будет запрошено artists["Jon"].albums

Но если вы попытаетесь не через скобки, а через точку запросить artists.name.albums, то получите ["five", "six"], так как не будет использовано значение переменной name, а будет обращение к свойству name объекта.

Хотел узнать: почему если убрать двойные ковычки в свойстве "artist" тут -
updateRecords(5439, "artist", "ABBA"); и соответственно такие ковычки - [ ] в функции там где аргумент prop (предварительно перед ним ставя точку) все перестает работать? Изначально же в объекте JSON свойства идут без ковычек(" ") и доступ к ним мы можем получить используя путь без ковычек([ ]), например: console.log(collection[2548].artist) - будет "Bon Jovi". Для меня это было не понятно из предыдущих уроков. Да и сравнения я делал изначально так: if (prop != tracks...), то есть тоже без кавычек (в уловии задачи кстати тоже идет просьба сравнить с tracks без ковычек). Это ошибка синтаксиса доступа именно внутри функции? То есть вне функции мы можем обращаться к свойству объекта без использования ковычек а внутри функции при обращении ко всем свойствам и работе с аргументами мы должы ставить ковычки и спользовать [ ] соответственно?
40 и "40px" - это все же не одно и то же. Да, в случае с реактом на выходе мы получим одно и то же, но это уже механика реакта. Он просто так устроен, что если на вход число, то это будут пиксели (то есть он конвертирует). Но в задаче все же ожидается 40 (именно число), так что если что-то другое - то это не 40.

С цветом тоже немного не так. Там же в стилях два раза purple:
const styles = { fontSize: 40, color: 'purple', border: '2px solid purple' }
Один для цвета текста (color), а другой для границ (бордера).

если 40 и "40px" одно и тоже, то почему последний вариант не считается правильным? ну и задача - раскрасить элемент div в фиолетовый, я понял как background: purple. color же относиться к цвету текста, а не к самому элементу div.
Вот, теперь понятно в чем именно проблема. Да, это бага. Поправил. Спасибо!
Николай, просто в условиях задания написано, сто в раздел anchor нужно вставить следующую строку: https://www.freecatphotoapp.com, но при выполнении задания выдает ошибку, что нужно было вставить: http://freecatphotoapp.com и пока не сделать исправление точно до знака, задача не выполняется.
Иван, в какой именно части несовпадение? Я не нашел. Нашел только непереведенное "this links to" в описании задачи, но в условиях вроде все совпадает.
возникают проблемы с решением задания, так как условия в задании и условия правильного решения не совпадают.