Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript for循环只提供第一个或最后一个结果_Javascript_Loops_For Loop_Return - Fatal编程技术网

Javascript 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

起初,我将返回放在for循环中,但只显示第一个结果。 我做了一些研究,我意识到结果是循环满足条件,因此它在第一个结果时停止。 我已经把它从循环中去掉了,现在它只提供最后的结果。 这不是我第一次遇到这个问题,尽管我在寻找解决方案,但我不明白我做错了什么

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;iconsole.log(diamond(2))//预期为空
请尝试
result+=
而不是
result=
谢谢!!我已经被困了一段时间,我想不出来了!现在我明白我做错了什么!祝你晚上愉快!!:)谢谢你的提示!我没有意识到我可以在两者中都使用
result+=
,然后将两者的结果都放在一个中。