制作星形图案的更好方法

时间:2017-09-08 23:31:59

标签: javascript for-loop

我收到了这段代码:



for (var i = 0; i < 10; i++) {
  output = "";
  for (var y = 0; y < 10 - i; y++) {
    output += "*";
  }
  console.log(output);
}

for (var x = 0; x <= 8; x++) {
  output2 = "";
  for (var z = 0; z < x + 2; z++) {
    output2 += "*";
  }
  console.log(output2);
}
&#13;
&#13;
&#13;

预期输出将是从10到1以及从2到10的星形模式 有没有更好的方法来打印这种模式???

2 个答案:

答案 0 :(得分:1)

如果你喜欢这样,你可以制作一个从X到Y字符打印图案的功能。

&#13;
&#13;
function printCharPattern(chars, from, to) {
  const step = (from < to) ? 1 : -1;
  for (let it = from; it != to + step; it += step) {
    console.log(chars.substr(0, it));
  }
}

const stars = '**********';
printCharPattern(stars, 10, 1);
printCharPattern(stars, 2, 10);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

决定一种算法比另一种算法更好的决定取决于谁决定。

使用ES6中引入的String.prototype.repeat

,对您的想法采用了一种不同的方法

&#13;
&#13;
for( var i = 9, addend=-1; i<10; i+=addend) {
   console.log('*'.repeat(i));
   if( i==1)
      addend=1;
}
&#13;
&#13;
&#13;

您可能会发现审核String.prototype来自ECMAScript 2017的补充内容非常有用,例如padStartpadEnd