Co prawda generalnie to nie prosimy tutaj na forum o gotowca, ale ostatnio bawiłem się w pewnym projekcie takimi własnie problemami aby na ich przykładzie pokazać kilka różnych elementów języka, więc mogę tutaj dać Ci jeden z nich, właśnie z choinką:
const tree = (n) => {
const result = [];
for (let i = 1; i <= n; i += 1) {
result[i] = '';
for (let j = i; j < n; j++) {
result[i] += ' ';
}
const max = (2 * i - 1);
for (let j = 1; j <= max; j++) {
result[i] += '*';
}
}
return result.join('\n');
};
i teraz trochę testów:
tree(5);
"
*
***
*****
*******
*********"
tree(3);
"
*
***
*****"
tree(2);
"
*
***"
tree(1);
"
*"
tree(0);
""
Generalnie nie jest to najlepsze z rozwiązań, ale aby je zrozumieć musisz podjąć temat tablic (array) w JS, temat pętli i poznać operatory, w tym takie jak "+=", "++" itp. Zwróć np. uwagę na "i += 1" oraz "j++" w pętli for. Specjalnie tak zrobiłem, aby pokazać, że czasem warto korzystać np. z i+=1 jeśli chciałbyś np. iterować po co drugiej wartości "i+=2" itp. Popatrz też sobie na zagnieżdżone pętle.
Proponuję abyś na spokojnie rozpisał sobie wszystkie iteracje na kartce i ręcznie analizował co za znak będzie się kolejno pojawiał i dlaczego.
Natomiast wersję krótszą pewnie ktoś Ci poda, to taka wersja na pomyślenie :)