2016-02-19 10 views
14

Uczę się JavaScript z książki Eloquent Javascript by Marijn Haverbeke, ćwiczenia na końcu drugiego rozdziału (Struktura programu). Napisz pętlę, która wywołuje siedem wywołań console.log, aby wyprowadzić następujący trójkąt:Jak uzyskać pierwszą część tego podstawowego ćwiczenia pętlowego?

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

Próbowałem rozwiązać go jak przy użyciu pętli for.

var hash = "#"; 

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

    hash = hash + "#"; 

    console.log(hash); 

} 

Problem polega na tym, że pokazuje się, nie pokazując pierwszego wiersza wymaganego wyniku, jak to uzyskać?

Byłbym bardzo wdzięczny za każde rozwiązanie, szczególnie jeśli zawiera małe wyjaśnienie.

+4

Jest to jeden z tych nielicznych pytań Noob Jestem gotów upvote wyłącznie na tej podstawie, że poprosiłeś to właściwie. Wyraźnie pokazuje pytanie, problem, próbę i rzeczywistą wydajność w stosunku do oczekiwań. Nie podawaj dobrze zadawanych pytań - zamknij w razie potrzeby, ale nie odrzucaj. –

+1

Witamy w załodze JS. Zdecydowanie zaakceptuj odpowiedź gimbel0893. Deklaracja zmiennej jako pustego ciągu jest drogą do zrobienia. – Trasiva

+0

Dobra robota, @Mohil, witaj w StackOverflow! Jedna drobna sugestia: zwykle chcesz, aby zmienne pętli były lokalne, więc 'for (licznik var ...' byłby lepszy – georg

Odpowiedz

6

Twój kod jest wykonywany "od góry do dołu".

W swojej "pętli for" pierwsza iteracja dodaje # do już zadeklarowanego skrótu var i sprawia, że ​​jest ##, a to zostaje "zalogowane" przez konsolę.

Wszystko, co musisz zrobić, to umieścić console.log (hash) przed hash = hash + "#".

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

Pozwoli to upewnić się, że w pierwszej iteracji, przede wszystkim „#” będzie „zalogowany” i dopiero wtedy hash = hash + „#” będzie dostać się do pracy :)

+5

Ale dodam, że może powinieneś spróbować zacząć od pustego ciągu, tak jak "count" powinien zaczynać się od zera, oszczędza dużo takich "incydentów" :) –

4

Natychmiast łączycie się z tym hashem. Wyloguj się z wartości początkowej przed pętlą.

console.log(hash); 
for ... 
+0

Lub zainicjuj hash jako pusty –

+0

To też by działało, tak. –

+0

yeah albo to będzie działać – gimbel0893

12

Dobra robota, ponieważ dopiero zaczynasz.

Prawie masz. Po prostu zadeklaruj zmienną jako pusty ciąg.

W ten sposób, dodając do zmiennej "hash" wewnątrz pętli, nie ma ona dodatkowego "#" z deklaracji zmiennej.

1

I może się spóźnić, ale robiąc to marnujesz jedną postać (dziewiątą).

zainicjować jak ten

hash = ''; 

i jesteś dobry, aby przejść .. :)

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