有没有一种方法可以根据其所在的数组长度在字符串中添加空格

时间:2018-12-27 20:41:03

标签: javascript arrays string

我有一个项目数组,每个项目都是一个包含字符串和数字的数组。对于每个基于数组的空格,我要寻找的结果等于30个字符,希望可以自动添加。请查看下面的代码

我试图手动添加空格,但是我的问题是我无法计算每个数组的字符数。

let data = [
      { Name: 'Cafe Latte', Count: 2, Price: 4.75 },
      { Name: 'Americano', Count: 4, Price: 3.75 }
    ];

   let formattedData = [
      ['Cafe Latte' + 'white space' + 2 + ' x ' + 4.75],
      ['Americano' + 'white space' + 4 + ' x ' + 3.75]
   ];

期望的是添加空格以将数组的总和增加到30个字符。

这可能吗?

2 个答案:

答案 0 :(得分:1)

您可以使用一个函数并移交字符串的左右部分,以获得带空格的组合字符串。

function pad(left, right, size) {
    left = left.toString();
    right = right.toString();
    return left + ''.padStart(size - left.length - right.length) + right;
}


let formattedData = [['Cafe Latte', 2 + ' x ' + 4.75], ['Americano', 4 + ' x ' + 3.75]],
    result = formattedData.map(a => pad(...a, 30));

console.log(result);

答案 1 :(得分:1)

如果我了解您的要求,则想使用padStartpadEnd来创建必要的空格。

以下是使用padEnd的示例:

let data = [
  { Name: 'Cafe Latte', Count: 2, Price: 4.75 },
  { Name: 'Americano', Count: 4, Price: 3.75 }
]

let output = data.map(item => {
  let info = `${item.Count} x ${item.Price}`
  let paddedName = item.Name.padEnd(30 - info.length)
  return paddedName + info
})

console.log(output)

重要的是它创建了字符串的Count/Price部分,并从30个字符的大小限制中减去了它的长度。结果就是您需要填充多少空间。 padEnd然后将所需的空格添加到Name。然后将两个字符串连接起来并返回结果。

请注意,如果您的Name和/或Count/Price产生的字符串太长,则将没有任何空格。