freeCodeCamp/guide/russian/certifications/javascript-algorithms-and-d.../basic-javascript/profile-lookup/index.md

96 lines
8.4 KiB
Markdown
Raw Normal View History

2018-10-12 20:00:59 +00:00
---
title: Profile Lookup
localeTitle: Поиск профиля
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
У нас есть набор объектов, представляющих разные люди в наших списках контактов.
Функция `lookUpProfile()` которая принимает **firstName** и свойство ( **prop** ) в качестве аргументов, была предварительно написана для вас.
Функция должна проверять, является ли **firstName** фактическим контактом **firstName,** и данное свойство ( **prop** ) является свойством этого контакта.
Если оба значения true, верните _значение_ этого свойства.
Если **firstName** не соответствует никаким контактам, тогда возвращайте `No such contact` .
Если **prop** не соответствует каким-либо действительным свойствам, тогда возвращайте `No such property` .
* Измените код ниже `// Only change code below this line` и до `// Only change code above this line` .
* Убедитесь, что вы редактируете внутреннюю часть функции `lookUpProfile()` .
* Эта функция включает в себя два параметра: **firstName** и **prop** .
* Функция должна просматривать список **контактов** для данного параметра **firstName** .
* Если найдено совпадение, тогда функция должна искать данный параметр **prop** .
* Если найдено имя **firstName** и связанная **поддержка** , вы должны вернуть значение **prop** .
* Если **firstName** найдено и никакой связанной **опоры** не найдено, вы должны вернуть `No such property` .
* Если **firstName** не найдено нигде, вы должны вернуть `No such contact` .
#### Связанные ссылки
* [Задача: доступ к объектам с помощью условных обозначений](http://www.freecodecamp.com/challenges/accessing-objects-properties-with-bracket-notation)
* [Задача: Итерация с помощью JavaScript для циклов](http://www.freecodecamp.com/challenges/iterate-with-javascript-for-loops)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
Используйте цикл `for` циклического перехода по списку **контактов** .
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
Используйте вложенный оператор `if` чтобы сначала проверить, совпадает ли **firstName** , и затем проверяет, соответствует `if` **поддержка** .
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
Оставьте свое `return "No such contact"` из цикла `for` в качестве окончательного улова.
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
```
for (var x = 0; x < contacts.length; x++){
if (contacts[x].firstName === name) {
if (contacts[x].hasOwnProperty(prop)) {
return contacts[x][prop];
} else {
return "No such property";
}
}
}
return "No such contact";
```
### Код Объяснение:
* Цикл `for` запускается, начиная с первого объекта в списке **контактов** .
* Если параметр **firstName,** переданный в функцию, соответствует значению ключа `"firstName"` в первом объекте, выполняется оператор `if` .
* Затем мы используем `.hasOwnProperty()` (проверяет, есть ли заданное свойство и возвращает логическое значение) с **prop** в качестве аргумента. Если это правда, возвращается значение **prop** .
* Если второй оператор `if` терпит неудачу, `No such property` не возвращается.
* Если первый оператор `if` не работает, цикл `for` переходит к следующему объекту в списке **контактов** .
* Если параметр **firstName** не соответствует объекту конечных **контактов** , цикл `for` завершается, и `No such contact` не возвращается.
**Пример Run**
* `lookUpProfile("Akira","likes");` пробеги.
* `"Akira"` сопоставляется с ключом `"firstName"` в первом объекте, поэтому оператор `if` возвращает true.
* `"likes"` находится внутри первого объекта, поэтому второй оператор `if` возвращает true.
* Возвращается значение `"likes"` - `"Pizza", "Coding", "Brownie Points"` .
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Видеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") **`Wiki Challenge Solution Template`** для **`Wiki Challenge Solution Template`** для справки.