如何在每列增加 1 的情况下连续循环,依此类推

how to loop in a row with each column increasing by 1 and so on

我有作业要做一个程序来显示几个数据,显示如下:

#
#$
#$%
#$%#
#$%#$
#$%#$%

我试过了,但看起来很奇怪,我不知道还能做什么,我卡住了,这是我的代码:

let str = '';
for (let i = 0; i < 6; i++) {
  str += '#';
  for (let j = 0; j < i; j++) {
    str += '$';
    for (let k = 1; k < i; k++) {
      str += '%';
      for (let k = 1; k < i; k++) {
        str += '#';
      }
    }
  }
  str += backpace = '\n';
}
console.log(str);

我的代码没有显示我所期望的,希望有人能帮助我

您只需要两个循环,一个用于行,一个用于列。列的循环只需要迭代到当前行号,例如对于第三行,列循环必须迭代三次。

  for(let col = 0; col <= row; col++)

要让字符显示在某一列,可以取一串字符重复显示,例如"#$%",然后访问该字符串中的第 col 个字符。使用模运算符,您可以确保第 3 列结果是第一个字符,第 4 列是第二个字符,依此类推:

 "#$%"[col % 3] // 0 => "#", 1 => "$", 2 => "%", 3 => "#", ...

循环太多,你只需要 2 个循环

    let dict = ["#", "$", "%"]; // available symbols in order
    let str = ''; // final string
    let linesToRender = 6; // number of lines to render

    for (let line = 0; line < linesToRender ; line++) {
      // line loop
      for (let col = 0; col <= line; col++) {
        // column loop ( from 0 to line number )
        str += dict[col % dict.length]
      }
      str += "\n";
    }
    console.log(str);

好的,这是你的作业。不要使用那么多循环,这是没有必要的。只是存储 当前行并在下一个循环周期中连接下一个字符。

const source = '#$%';
let str = '';
let output = '';

for (let i = 0; i < 6; i++) {
  str += source[i % source.length];
  output += str + '\n';
}

console.log(output);