我正在尝试制作一个直对齐的三角形。我能够轻松地制作一个左对齐的三角形,但无法让空格数随着每增加一行而减少。
输出应为:
#
##
###
####
#####
let levels = 8;
let hash = '';
for (let i = 1; i <= levels; i++) {
hash += '#';
console.log(hash)
}
与其重复使用相同的字符串,不如考虑使用 repeat()
和 padStart()
生成每一行:
function rightAlignedTriangle (levels) {
for (let i = 1; i <= levels; i++) {
const row = '#'.repeat(i).padStart(levels)
console.log(row)
}
}
rightAlignedTriangle(5)
若要使用嵌套循环而不是字符串方法实现此目的,可以手动将上述两种方法实现为外部循环中声明的变量字符串上的内部循环:
function rightAlignedTriangle (levels) {
for (let i = 1; i <= levels; i++) {
let row = ''
for (let j = 0; j < levels; j++) {
if (j < i) { row += '#' } // repeat(i)
else { row = ' ' + row } // padStart(levels)
}
console.log(row)
}
}
rightAlignedTriangle(5)