2016-12-17 7 views
2

Wie könnte ich Pyramide of Stars erstellen, die jede Zeile um 2 so erhöhen:Pyramide of Stars Javascript

* 
* * * 
* * * * * 
* * * * * * * 

Mein zur Zeit Code:

for (var x = 0; x < 5; x++) { 
    for (var y = 0; y <= x; y = y + 1) { 
     document.write(" * "); 
    } 
    document.write("<br>"); 
} 
+2

Wenn Sie 'row' von 0 zählen, dann wollen Sie' numberOfSta rs = row * 2 + 1; 'Jetzt justiere die innere Schleife ... –

Antwort

4

es möglich ist, nur durch 2.

for(var i = 1; i < 20; i += 2) { 
    console.log(Array(i).fill('*').join(' ')); 
} 

Ansonsten innerhalb der Schleife nur mehrfach in der Schleife zu erhöhen

for(var i = 0; i < 10; i++) { 
    console.log(Array(i*2 + 1).fill('*').join(' ')); 
} 

Sie können auch auf polyfill Array.fill brauchen abhängig von yo Dein Ziel.

+0

Wenn Sie 'fill' verwenden, können Sie auch' repeat' verwenden. –

+0

das ist auch möglich. aber dann müsstest du es auch zuschneiden und dann hast du den hässlich aussehenden Raum hinter dem Stern: ''*' .repeat (i) .trim()'. könnte man leicht den Raum weglassen und den Effekt ruinieren? – bitten

0

Sie können wie folgt tun.

function generate() { 
 
    var totalNumberofRows = 5; 
 
    var output=""; 
 
    for (var i = 1; i <= totalNumberofRows; i++) { 
 
     for (var j = 1; j <= i; j++) { 
 
     if(j==1) 
 
      output+="*"; 
 
     else 
 
      output+="  "+ "*" + "  "+ "*"; 
 
    } 
 
    console.log(output); 
 
     output=""; 
 
    } 
 
} 
 
generate()

+0

Diese Lösung ist nicht sehr skalierbar, was ich meine, was ist, wenn ich jede dritte oder zehnte Zeile ausdrucken möchte? –

2

Andere Antworten erstellen die gesamte Zeile jedes Mal neu. Diese Lösung erweitert die Reihe jedes Mal um einen weiteren Stern.

function pyramid(n) { 
 
    let result = '', str = '', add = '*'; 
 
    for (var i = 0; i < n; i++) { 
 
    str += add; 
 
    add = ' *'; 
 
    if (!(i % 2)) result += str + '\n'; 
 
    } 
 
    return result; 
 
} 
 

 
console.log(pyramid(5));

0

Hoffnung so ist dies auch für Sie von Vorteil ....

$ (document) .ready (function() {

var NumberofRows = 5,arr; 
    for (var i = 1; i <= NumberofRows; i++) { 
     pyramid = []; 
     for (var j = 1; j <= i; j++) { 
      pyramid.push('*');    
     } 
     console.log(pyramid.join(" ") + "\n"); 
     }  
}); 

``