Closed jeron-diovis closed 8 years ago
for (var i = 0; i < names.length; i++) { var check = 0; check += (yourName === names[i]); } ... if (check > 0) { ...
Рассуждаем.
Нужно определить, присутствует ли элемент в массиве - не подсчитать количество вхождений, а сказать - да или нет.
Следовательно - достаточно булевой переменной вместо счётчика.
И назвать её стоит не check
- это довольно-таки безлико - а, например, hasMatch
. Булевые переменные принято именовать подобным образом: isSomething
, hasSomething
, containsSomething
, и так далее, по смыслу. Такое негласное соглашение здорово помогает при чтении, т.к. ты сразу понимаешь, чего от этой переменной можно ожидать.
Далее. Раз нам не нужно подсчитывать количество вхождений - значит, найдя первое, дальше по циклу идти нет смысла, это просто никому не нужно. Найди информацию, как прервать выполнение цикла, поправь - и будет хорошо.
Зачёт.
Замечания:
Lesson 10
Форматирование совершенно неприемлемо. Смотри первую ссылку из ДЗ. С форматирования код начинается, и чтоб его хотелось читать, он должен аккуратно выглядеть)
Конвертацию в число через
+
Олег в видео показывал, ок. Но вообще, это скорее своеобразный хак, нежели общепринятая практика. Такое можно встретить в библиотеках, например, но в бизнес-коде обычно так не принято (по крайней мере, я не особо встречал). Для этих целей существует функцияparseInt
(иparseFloat
для дробных). Результат будет тот же, но сам код более семантичный, более читабельный. Это хороший тон.Опять же, форматирование - пробел после плюса лишний. Унарные операторы принято писать слитно.
Lesson 11
Об осмысленном именовании переменных говорилось в видео. Рядом есть переменная
name
, почему бы массив, соответственно, не назватьnames
?Ошибки оформления. Найди с трёх попыток.
Два момента. Во-первых, переменная
name
избыточна. Она получает значение, записывается в массив, и больше ни для чего не используется. Вместо этого можно сразу записать значение в массив и убратьname
совсем. Если бы с введённым именем проводились какие-то ещё манипуляции перед тем, как в массив положить - какая-то валидация, замена символов etc. - это было бы ок. А так - избыточно.Во-вторых. Добавление элементов в массив через присвоение по индексу - плохая практика. В маленьком примере это, конечно, несущественно, но следует помнить и понимать, что на больших массивах такой подход может работать весьма медленно. В видеоуроках показан метод массива
push
- для добавления элемента в конец массива всегда следует использовать именно его.Дополнительно:
Самое время использовать сокращённую запись. Там где можно, её всегда стоит использовать - опять же, код чище и читабельнее. "Увеличить переменную вдвое" понятнее, чем "записать в переменную результат умножения её текущего значения на два".
Тут всё в порядке, но в качестве бонуса можешь найти информацию про string substitutions в консоли и применить её в этой строке.
Вообще, за
indexOf
плюсик. Это правильно. Если ты знаешь, что есть функция, которая сделает работу за тебя - используй её. Но в задании сказано "введенное имя циклом сравнивать с именами в массиве" - думаю, чтобы проверить, напишете ли вы этот самый цикл оптимально или "в лоб". Это имеет смысл проверить - поэтому сделай цикл, пожалуйста.