Javascript for循环只提供第一个或最后一个结果
起初,我将返回放在for循环中,但只显示第一个结果。 我做了一些研究,我意识到结果是循环满足条件,因此它在第一个结果时停止。 我已经把它从循环中去掉了,现在它只提供最后的结果。 这不是我第一次遇到这个问题,尽管我在寻找解决方案,但我不明白我做错了什么Javascript for循环只提供第一个或最后一个结果,javascript,loops,for-loop,return,Javascript,Loops,For Loop,Return,起初,我将返回放在for循环中,但只显示第一个结果。 我做了一些研究,我意识到结果是循环满足条件,因此它在第一个结果时停止。 我已经把它从循环中去掉了,现在它只提供最后的结果。 这不是我第一次遇到这个问题,尽管我在寻找解决方案,但我不明白我做错了什么 function diamond(n) { let space = " "; //spaces let newLine = "\n" let aster = "*"; let multi = (n - 1) / 2; //var
function diamond(n) {
let space = " "; //spaces
let newLine = "\n"
let aster = "*";
let multi = (n - 1) / 2; //variable in for loop
let result = ""
if ((n % 2 === 0) || n < 1) {
return null
} else if (n === 1) {
return aster
} else {
for (let i = 0; i < multi; i++) {
result = space.repeat(multi - i) + aster.repeat(1 + (i * 2)) + space.repeat(multi - i) + newLine;
}
return result // gives only the last result
}
}
console.log(diamond(7)) // expected " *\n ***\n*****\n ***\n *\n"
console.log(diamond(1)) // expected "*"
console.log(diamond(2)) // expected null
函数菱形(n){
let space=”“;//空格
let newLine=“\n”
让aster=“*”;
让multi=(n-1)/2;//for循环中的变量
让result=“”
如果((n%2==0)| | n<1){
返回空
}else if(n==1){
返回紫菀
}否则{
for(设i=0;i
发生这种情况是因为在循环的每次迭代中,在变量result
处重新分配了一个新值
您希望首先将变量实例化为字符串。然后在每次迭代时将concat数据发送给它 大概是这样的:
let result = '';
for (let i = 0; i < multi; i++) {
result += space.repeat(multi - i) + aster.repeat(1 + (i * 2)) + space.repeat(multi - i) + newLine;
}
return result;
let result='';
for(设i=0;i
请注意+=
运算符:-)
希望这会对您有所帮助。正如其他人所暗示的,使用
+=
将每一行附加到结果中
函数菱形(n){
let space=”“;//空格
let newLine=“\n”
让aster=“*”;
让multi=(n-1)/2;//for循环中的变量
让result=“”
如果((n%2==0)| | n<1){
返回空
}else if(n==1){
返回紫菀
}否则{
for(设i=0;i console.log(diamond(2))//预期为空
请尝试result+=
而不是result=
谢谢!!我已经被困了一段时间,我想不出来了!现在我明白我做错了什么!祝你晚上愉快!!:)谢谢你的提示!我没有意识到我可以在两者中都使用result+=
,然后将两者的结果都放在一个中。