Как правильно получить первую часть этого основного упражнения цикла?

Я изучаю Javascript из книги "Красноречивый Javascript" Марии Хавербеке, в конце второй главы (Структура программы) есть упражнение. Напишите цикл, который делает семь вызовов console.log для вывода следующего треугольника:

#
##
###
####
#####
######
#######

Я попытался решить его, используя цикл for.

var hash = "#";

for(counter = 0; counter < 8; counter ++)
{

   hash = hash + "#";

   console.log(hash);

}

Проблема заключается в том, что она не показывает первую строку требуемого вывода, как мне это получить?

Я был бы очень признателен за любое решение, особенно если оно содержит небольшое объяснение.

Ответы

Ответ 1

Ваш код выполняется "сверху вниз".

В вашем цикле "for" первая итерация добавляет # к уже объявленному хэш-символу var, и это делает его ##, и это будет "зарегистрировано" на консоли.

Все, что вам нужно сделать, это поставить console.log(hash) перед хешем = hash + "#" .

console.log(hash);
hash = hash + "#";

Это гарантирует, что в первой итерации, прежде всего, "#" будет "зарегистрирован", и только тогда hash = hash + "#" будет работать:)

Ответ 2

Хорошая работа, так как вы только начинаете.

Ты почти понял. Просто объявите переменную как пустую строку.

// this is the line that needs to be changed
var hash = '';

for(....) {
  hash += "#";
  console.log(hash);
}

Таким образом, когда вы добавляете переменную "hash" внутри цикла, у нее нет этого дополнительного "#" из объявления переменной.

Ответ 3

Вы сразу же присоединяете хэш к нему. Выйдите из начального значения перед циклом.

console.log(hash);
for ...

Ответ 4

Возможно, я опаздываю, но, делая это, вы теряете один символ (9-й).

выполните следующие действия:

hash = '';

и вам хорошо идти..:)

Ответ 5

var grid = "#"
for(i = 1; i < 8; i++){
    console.log(grid.repeat(i));
}