为什么这个函数的输出中有额外的空间?

时间:2017-03-16 01:35:15

标签: javascript for-loop

我无法弄清楚为什么当我在replit中运行此代码时,它会在answer和undefined之间返回一个额外的空格。 '\ n'必须在那里才能按照它的方式进行格式化,但任何人都可以解释如何摆脱空间吗?感谢任何帮助。

代码:

function transposeTwoStrings(array) {
  var x = array[0];
  var y = array[1];
  var longestString = 0;
  var result = '';

  if(x.length > y.length) {
    longestString = x;
  }
  else if(y.length > x.length) {
    longestString = y;
  }
  else if(x.length === y.length) {
    longestString = x;
  }
  
  for(var i = 0; i < longestString.length; i++) {
    result += ((x[i] || ' ') + ' ' +(y[i] || ' ')) + '\n';
  }             
  return result;
} 
   
console.log(transposeTwoStrings(['Hello','World']));

      Replit Output:

      H W
      e o
      l r
      l l
      o d
                         <--(This is the space)
      => undefined

2 个答案:

答案 0 :(得分:1)

您最后会得到换行符\n,某些浏览器会忽略该换行符。您可以使用trim()

将其删除
function transposeTwoStrings(array) {
    var x = array[0];
    var y = array[1];
    var longestString = 0;
    var result = '';

    if (x.length > y.length) {
        longestString = x;
    }

    else if (y.length > x.length) {
        longestString = y;
    }

    else if (x.length === y.length) {
        longestString = x;
    }

    for (var i = 0; i < longestString.length; i++) {
        result += ((x[i] || ' ') + ' ' + (y[i] || ' ')) + '\n';
    }
    return result.trim();
}
console.log(transposeTwoStrings(['Hello', 'World']));

答案 1 :(得分:0)

您可以修改for循环,只向最后一行添加换行符,而不是在每行后添加+ '\n'

for (var i = 0; i < longestString.length; i++) {
    result += ((x[i] || ' ') + ' ' + (y[i] || ' '));
    if(i < longestString.length - 1) {result += '\n';}
}