2016-02-19 4 views
14

私はMarijn HaverbekeのEloquent Javascriptの本からJavascriptを学んでいます。第2章(プログラム構造)の最後にはエクササイズがあります。 console.logを7回呼び出して次の三角形を出力するループを作成します。この基本ループの最初の部分はどのようにして運動するのですか?

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

forループを使用するように解決しようとしました。

var hash = "#"; 

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

    hash = hash + "#"; 

    console.log(hash); 

} 

問題は、必要な出力の最初の行が表示されないことを示しています。どのように取得できますか?

私は非常にそれは少し説明が付属している場合、特にすべてのソリューションをいただければ幸いです。

+4

これは、私はあなたが求めていることを理由に、純粋にupvoteに喜んでそれらのいくつかのnoobの質問の一つでありますそれは適切です。質問、問題、試行、実際の出力対期待を明確に示しています。ダウンタウンの質問はしないでください - 必要に応じて閉じるが、ダウンボトムはしないでください。 –

+1

JSクルーへようこそ。間違いなくgimbel0893の答えを受け入れる。変数を空の文字列として宣言することは、方法です。 – Trasiva

+0

いい仕事、@Mohil、歓迎StackOverflow! 1つのマイナーな提案:通常、ループ変数をローカルにしたいので、 'for(var counter ...')が良いでしょう。 – georg

答えて

6

あなたのコードは「上から下へ」実行されています。で

は、あなたの「forループ」最初の反復はすでに宣言のvarハッシュに#を追加し、それはそれを作る##、これは、コンソールによって「ログイン」を取得します。

あなたがする必要があるのは、ハッシュ=ハッシュ+「#」の前にはconsole.log(ハッシュ)を入れています。

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

これは、最初の反復では、すべての「#」の最初の「ログイン」とだけにして、ハッシュ=ハッシュ+「#」が動作するように:)

+5

しかし、私は、おそらくあなたは空の文字列で開始しようとする必要があります、ちょうど 'カウント'はゼロから開始する必要があります、それはそのような 'インシデントをたくさん保存する:) –

4

あなたはすぐにそれにハッシュを連結しています。ループの前に初期値をログアウトします。

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

ハッシュを空のままで初期化する –

+0

これも有効です。 –

+0

ええ、これはうまくいくでしょう – gimbel0893

12

あなたがちょうど開始して以来、いい仕事です。

あなたはほとんどそれを得ました。変数を空の文字列として宣言するだけです。

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

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

このように、ループ内の「ハッシュ」変数に追加すると、変数宣言の余分な「#」はありません。

1

Iを取得することになることを確認します遅くなるかもしれませんが、これを行うことによってあなたは1人のキャラクター(9人目)を無駄にしています。 ..

この

hash = ''; 

のように初期化し、あなたが行ってもいいです:)

0
var grid = "#" 
for(i = 1; i < 8; i++){ 
    console.log(grid.repeat(i)); 
} 
関連する問題