2016-02-19 9 views
14

Sto imparando Javascript dal libro Eloquent Javascript di Marijn Haverbeke, c'è esercizio alla fine del secondo capitolo (Struttura del programma). Scrivere un ciclo che rende sette chiamate console.log all'uscita seguente triangolo:Come ottenere la prima parte di questo esercizio di base del ciclo giusto?

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

Ho cercato di risolverlo come utilizzando un ciclo.

var hash = "#"; 

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

    hash = hash + "#"; 

    console.log(hash); 

} 

Il problema è che non mostra la prima riga dell'output richiesto, come posso ottenerlo?

Apprezzerei molto qualsiasi soluzione, specialmente se viene fornita con una piccola spiegazione.

+4

Questa è una di quelle poche domande del noob Sono disposto a upvote puramente per il fatto che lei ha chiesto correttamente. Mostra chiaramente la domanda, il problema, il tentativo e l'output effettivo rispetto all'aspettativa. Si prega di non fare obliquamente domande ben fatte - chiudi se necessario, ma non di downvotare. –

+1

Benvenuto nella squadra JS. Sicuramente accetta la risposta di gimbel0893. Dichiarare la variabile come una stringa vuota è la strada da percorrere. – Trasiva

+0

Buon lavoro, @Mohil, benvenuto su StackOverflow! Un suggerimento minore: di solito, vuoi che le variabili del ciclo siano locali, quindi 'per (contatore var ...' sarebbe meglio. – georg

risposta

6

Il codice viene eseguito 'dall'alto al basso'.

Nel proprio ciclo "for", la prima iterazione aggiunge un # all'hash var già dichiarato e questo lo rende ## e viene "registrato" dalla console.

Tutto ciò che devi fare è mettere console.log (hash) prima di hash = hash + "#".

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

Questo farà in modo che nella prima iterazione, prima di tutto un '#' sara 'registrato' e solo allora hash = hash + "#" si metterà al lavoro :)

+5

Ma vorrei aggiungere che forse dovresti provare ad iniziare con una stringa vuota, proprio come il 'conteggio' dovrebbe essere avviato da zero, salva un sacco di tali 'incidenti' :) –

4

Si concatena immediatamente un hash. Scollega il valore iniziale prima del ciclo.

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

Oppure inizializza hash come vuoto –

+0

Funzionerebbe anche, sì. –

+0

sì o questo funzionerà anche – gimbel0893

12

Bel lavoro da quando hai appena iniziato.

Hai quasi capito. Basta dichiarare la variabile come una stringa vuota.

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

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

In questo modo quando si aggiungono alla variabile "hash" all'interno del ciclo, non ha quel qualcosa in più "#" dalla dichiarazione delle variabili.

1

I potrebbe essere in ritardo ma, facendo questo, stai sprecando un personaggio (il nono).

inizializzare come questo

hash = ''; 

e vi sono buone per andare .. :)

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