Почему такой код не работает? Логика - сначало проверить на отсутствие свойства с именем атрибута 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));
Вы имеете ввиду квадратные скобки? ' и " - это кавычки, а [] - это квадратные скобки.
Не вижу вашего примера как именно вы пытаетесь что делать, но предположу, что вы запутались со случаями использования переменных. К примеру, есть объект:
Если вы оперируете самими именами свойств, то да, можете обратиться к свойствам без скобок, например
Но, если вы хотите использовать переменную с именем, то тут только через квадратные скобки. Например
Здесь вы получите ["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:
Один для цвета текста (color), а другой для границ (бордера).
если 40 и "40px" одно и тоже, то почему последний вариант не считается правильным? ну и задача - раскрасить элемент div в фиолетовый, я понял как background: purple. color же относиться к цвету текста, а не к самому элементу div.
Вот, теперь понятно в чем именно проблема. Да, это бага. Поправил. Спасибо!
Николай, просто в условиях задания написано, сто в раздел anchor нужно вставить следующую строку: https://www.freecatphotoapp.com, но при выполнении задания выдает ошибку, что нужно было вставить: http://freecatphotoapp.com и пока не сделать исправление точно до знака, задача не выполняется.
Иван, в какой именно части несовпадение? Я не нашел. Нашел только непереведенное "this links to" в описании задачи, но в условиях вроде все совпадает.
возникают проблемы с решением задания, так как условия в задании и условия правильного решения не совпадают.