Javascript 制作字符串模式
我正在尝试使以下代码按如下方式运行: 模式4: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
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;ifunction 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它正在创建新的生产线