Javascript 制作字符串模式

Javascript 制作字符串模式,javascript,for-loop,Javascript,For Loop,我正在尝试使以下代码按如下方式运行: 模式4: 1 1*2 1**3 1***4 这就是我现在拥有的。当我运行代码时,我得到一个空白返回。有人能给我指一下正确的方向吗?谢谢大家! 测试类示例:test.assertEqualspattern3,1\n1*2\n1**3 输出可以是一个数组,您可以将新项目推送到该数组上 function pattern(n){ var output = []; for (var i = 0; i < n; i++) { output.pus

我正在尝试使以下代码按如下方式运行:

模式4:

1
1*2
1**3
1***4
这就是我现在拥有的。当我运行代码时,我得到一个空白返回。有人能给我指一下正确的方向吗?谢谢大家!

测试类示例:test.assertEqualspattern3,1\n1*2\n1**3

输出可以是一个数组,您可以将新项目推送到该数组上

function pattern(n){
  var output = [];
  for (var i = 0; i < n; i++) {
    output.push("1" + (Array(n-1).join("*")).toString() + n.toString());
  }
  return output;
}
输出可以是一个数组,您可以将新项推送到该数组上

function pattern(n){
  var output = [];
  for (var i = 0; i < n; i++) {
    output.push("1" + (Array(n-1).join("*")).toString() + n.toString());
  }
  return output;
}
需要注意的几点:

正如@PatrickEvans所述,JS中的字符串是不可变的,因此尝试修改字符串中的字符元素是行不通的

在每个字符串末尾增加星号*和数字的模式不需要静态n,而是增加i

这里有两种方法可以做到这一点,尽管我建议采用后者

字符串连接:

函数模式{ var输出=; 对于变量i=0;i 正如@PatrickEvans所述,JS中的字符串是不可变的,因此尝试修改字符串中的字符元素是行不通的

在每个字符串末尾增加星号*和数字的模式不需要静态n,而是增加i

这里有两种方法可以做到这一点,尽管我建议采用后者

字符串连接:

函数模式{ var输出=; 对于变量i=0;i控制台4 我做了一些修改,稍微修改了逻辑

让输出为数组而不是字符串。 从i=1开始迭代,而不是从i=0开始迭代。我们需要第一个值为1 当i==1时,输出将仅为1 1+Arrayi.join*.toString+i.toString; Arrayi.join'*'will concat*,i times&i.toString与1 在您的代码中,它是Arrayn-1。join*.toString+n.toString; 我相信最后一个数字永远是n。所以每次输出都是1**n 希望这段代码有用

function pattern(n){
  var output = [];
  for (var i = 1; i <= n; i++) { 
  if(i==1){
   output.push("1")
  }
  else if(i>1){
    output.push("1" + (Array(i).join("*")).toString() + i.toString());
 }
 }

return output;
}
var m = pattern(5);
console.log(m.join('\n'));

检查这个

我做了一些更改并稍微修改了逻辑

让输出为数组而不是字符串。 从i=1开始迭代,而不是从i=0开始迭代。我们需要第一个值为1 当i==1时,输出将仅为1 1+Arrayi.join*.toString+i.toString; Arrayi.join'*'will concat*,i times&i.toString与1 在您的代码中,它是Arrayn-1。join*.toString+n.toString; 我相信最后一个数字永远是n。所以每次输出都是1**n 希望这段代码有用

function pattern(n){
  var output = [];
  for (var i = 1; i <= n; i++) { 
  if(i==1){
   output.push("1")
  }
  else if(i>1){
    output.push("1" + (Array(i).join("*")).toString() + i.toString());
 }
 }

return output;
}
var m = pattern(5);
console.log(m.join('\n'));

选中此项

您的输出是字符串:output=,字符串在javascript中是不可变的,这意味着您不能在适当的位置更改它的任何部分,例如output[3]=a,您必须创建一个新字符串您的输出是字符串:output=,字符串在javascript中是不可变的,这意味着您不能在适当的位置更改它的任何部分,例如output[3]=a,你必须做出新的选择谢谢你的回复!这很有帮助。我在这里结束了最后一段代码:您能解释一下output.join\n工作的原因吗?我不太明白那里发生了什么。@wahoowa它正在创建新的线路感谢您的回复!这很有帮助。我在这里结束了最后一段代码:您能解释一下output.join\n工作的原因吗?我不太明白那里发生了什么。@wahoowa它正在创建新的生产线