我收到了这段代码:
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;
预期输出将是从10到1以及从2到10的星形模式 有没有更好的方法来打印这种模式???
答案 0 :(得分:1)
如果你喜欢这样,你可以制作一个从X到Y字符打印图案的功能。
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;
答案 1 :(得分:1)
决定一种算法比另一种算法更好的决定取决于谁决定。
使用ES6中引入的String.prototype.repeat
for( var i = 9, addend=-1; i<10; i+=addend) {
console.log('*'.repeat(i));
if( i==1)
addend=1;
}
&#13;
您可能会发现审核String.prototype来自ECMAScript 2017的补充内容非常有用,例如padStart
和padEnd
。