添加空间以填充数组长度

时间:2017-05-08 20:22:47

标签: javascript arrays join

我正在使用需要以某种方式格式化的javascript程序。基本上,我需要让数组中的每个信息部分都设置一个长度,例如12个字符长,并且不超过这个长度。

我遇到的问题是数组中的值不是12个字符长。如果我的值小于12个字符,则剩余的字符分配需要填充空格。

每个信息部分的长度大小不一样,并不总是12.如果每个部分的长度不符合最大要求,我如何添加X个空格?

这就是我在增加空间的地方:

str = str + new Array(str.length).join(' ');

我很确定我上面的内容是错误的,但我相信我在.join函数的正确轨道上。有什么想法吗?

编辑:我被要求展示想要的结果。它有点复杂,因为这个javascript正在运行一个Web报表工具,而不是像Visual Studio这样的东西,所以它不是传统的JS。

预期的结果应该类似于:

Sample Image

因此,如上所示,数据在一行中,如果对于"列太短,则切断较长的信息串或填充空格。保持好看,甚至看起来。

3 个答案:

答案 0 :(得分:0)

不完全确定您的设置方式 - 但以下内容将接受一个数组并返回另一个数组,其所有值的长度均为12个字符。



var array = ['Test', 'Testing', 'Tested', 'This is not a Test'];
var adjustedArray = correctLength(array, 12);

function correctLength(array, length) {
  array.map(function(v, i) {
      if (array[i].length < length) {
        array[i] += Array((length+1) - array[i].length).join('_');
      }
      // might not need this if values are already no greater than 12
      array[i] = array[i].substring(0, length);
  });
  return array;
}

console.log(adjustedArray);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

尝试此代码并利用地图功能的奇迹: 假设您的数组是:

var myArr = ["123456789012", "12345678901", "123"];

现在只需应用此功能

myArr.map(function(item){ //evalueate each item inside the array
    var strLength = item.length; //apply this function to each item
    if (strLength < 12){
        return item + ' '.repeat(12-item.length) //add the extra spaces as needed
    } else {
        return item; // return the item because it's length is 12 or +
    }
})

你要找的是' '.repeat(x) - 其中x是你想要重复你设置的字符串的次数,它可能是'*'.repeat(2)而你会得到'**',如果你想了解更多有关它的信息,请查看docs

答案 2 :(得分:0)

取决于哪个版本的javascript,这可能有效:

if (str.length < 12) str += ' '.repeat(12 - str.length);