我有一个项目数组,每个项目都是一个包含字符串和数字的数组。对于每个基于数组的空格,我要寻找的结果等于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个字符。
这可能吗?
答案 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)
如果我了解您的要求,则想使用padStart
或padEnd
来创建必要的空格。
以下是使用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
产生的字符串太长,则将没有任何空格。