无法将左对齐三角形变为右对齐三角形

时间:2019-01-11 22:32:08

标签: javascript algorithm

我正在尝试制作一个右对齐的三角形。我能够轻松地使一个左对齐的三角形,但无法获得每增加一行减少的空格数。

输出应为:

       #
      ##
     ###
    ####
   #####

let levels = 8;
let hash = '';

for (let i = 1; i <= levels; i++) {
    hash += '#';
    console.log(hash)
}

1 个答案:

答案 0 :(得分:1)

考虑使用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)