2016-02-19 13 views
14

Marijn Haverbeke tarafından Eloquent Javascript adlı kitaptan Javascript öğreniyorum, ikinci bölümün sonunda egzersiz var (Program Yapısı). Yedi çağrıları yapan bir döngü çıkışına aşağıdaki üçgen console.log yaz:Bu temel döngü alıştırmasının ilk kısmı nasıl alınır?

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

Ben döngü için kullanmak gibi bunu çözmek çalıştı.

var hash = "#"; 

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

    hash = hash + "#"; 

    console.log(hash); 

} 

Sorun, gerekli çıktıların ilk satırını göstermiyor göstermesi, bunu nasıl elde edebilirim?

Özellikle küçük bir açıklama ile geliyorsa, herhangi bir çözümü çok takdir ediyorum.

+4

Bu seni sordum olduğu gerekçesiyle tamamen upvote razıyım bu birkaç çaylak sorulardan biridir doğru şekilde. Soruyu, sorunu, girişimi ve gerçek çıkışın beklediğini açıkça gösterir. Lütfen iyi sorulan soruları reddetme - gerekirse kapat, ama reddetme. –

+1

JS ekibine hoş geldiniz. Kesinlikle gimbel0893'ün cevabını kabul et. Değişkeni boş bir dize olarak bildirmek, gidilecek yoldur. – Trasiva

+0

İyi iş, @Mohil, StackOverflow'a hoş geldiniz! Bir küçük öneri: genellikle, döngü değişkenleri yerel olmak istersiniz, bu yüzden '(var sayacı ...' daha iyi olur. – georg

cevap

6

Kodunuz "aşağıdan yukarıya doğru" yürütülür.

'Döngü' öğenizde, ilk yineleme önceden bildirilmiş var karesine bir # ekler ve bu da ## yapar ve bu da konsol tarafından "günlüğe kaydedilir".

Yapmanız gereken tek şey, hash = hash + "#" işleminden önce console.log (hash) komutunu koymaktır.

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

Bu birinci tekrarda, bütün bir '#' ilk 'kaydediliyor' ve ancak o zaman karma = karma + "#" işe :)

+5

Ama şunu eklemeliyim ki, boş bir dizeyle başlamayı denemeniz gerekir, tıpkı 'sayım' sıfırdan başlatılmalı gibi, bu tür 'olayları' kaydeder :) –

4

Hemen bir hash işlemini birleştiriyorsunuz. Döngüden önceki başlangıç ​​değerini günlüğe kaydedin.

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

Veya hash değerini boş olarak başlat –

+0

Bu da işe yarar, evet. –

+0

evet ya da bu da işe yarayacak – gimbel0893

12

Yeni başladığınızdan beri iyi iş.

Neredeyse anladınız. Sadece değişkeni boş bir dize olarak bildirin.

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

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

Eğer döngü içinde "karma" değişkene eklendikçe bu şekilde, değişken bildiriminde gelen bu ekstra "#" yoktur.

1

I alacak olacağından emin olacağım geç kalabilirdi ama bunu yaparak bir karakteri (9'uncu) harcıyorsun.

bu

hash = ''; 

gibi başlatmak ve gitmek iyidir .. :)

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