使用制表符或空格格式化文本

hlc*_*lcs 4 javascript jquery text-formatting

我有这样的对象:

{
 Name: "John"
 Location: "Unknown"
 Type: "Unknown"
 Status: "Unknown"
 Phone_number: "Unknown"
}
Run Code Online (Sandbox Code Playgroud)

需要像这样格式化(使用制表符或空格):

Name:           John // three tabs
Location:       Unknown // two tabs
Type:           Unknown // three tabs
Status:         Unknown // three tabs
Phone_number:   Unknown // one tab
Run Code Online (Sandbox Code Playgroud)

Java和Perl 在printf中有这个功能,但是如何在javascript中执行此操作?

max*_*mus 10

String.prototype.padEnd(targetLength, padString)方法将完成这项工作,它已记录在此处。如果省略,该padString参数将设置为单空格字符串。

例子:

console.log(`   ${'Player'.padEnd(19)} ` +
    `${'MATCH'.padEnd(8) } ` +
    `${'SCORE'.padEnd(8) } `
);
for (const player of this.players) {
    console.log(` - ${player.name.padEnd(20)} ` +
        `${player.matches.length.toString().padEnd(8) } ` +
        `${player.score.toString().padEnd(8) } `
    );
}
Run Code Online (Sandbox Code Playgroud)

结果:

   Player              MATCH    SCORE   
 - Bradly               5        15      
 - Sam                  4        9       
 - Dew                  3        5     
Run Code Online (Sandbox Code Playgroud)


hlc*_*lcs 9

好.在这里找到:

/**
 * object.padding(number, string)
 * Transform the string object to string of the actual width filling by the padding character (by default ' ')
 * Negative value of width means left padding, and positive value means right one
 *
 * @param       number  Width of string
 * @param       string  Padding chacracter (by default, ' ')
 * @return      string
 * @access      public
 */
String.prototype.padding = function(n, c)
{
        var val = this.valueOf();
        if ( Math.abs(n) <= val.length ) {
                return val;
        }
        var m = Math.max((Math.abs(n) - this.length) || 0, 0);
        var pad = Array(m + 1).join(String(c || ' ').charAt(0));
//      var pad = String(c || ' ').charAt(0).repeat(Math.abs(n) - this.length);
        return (n < 0) ? pad + val : val + pad;
//      return (n < 0) ? val + pad : pad + val;
};
Run Code Online (Sandbox Code Playgroud)

这不适用于制表符,但可以使用空格来完全按照我的描述进行描述.

对于我的示例代码将是:

$.each(myObj, function(myKey, myVal) {

   myOut += myKey.padding(20) + " = " + myVal + "\r\n";

});
Run Code Online (Sandbox Code Playgroud)

输出将是:

Name                 = John
Location             = Unknown
Type                 = Unknown
Status               = Unknown
Phone_number         = Unknown
Run Code Online (Sandbox Code Playgroud)


Rau*_*ins 6

编辑您可以使用“\t”添加更多选项卡。每个 '\t' 表示一个选项卡,因此在 console.log 中您可以使用更多的 console.log(prop + ": \t\t\t " + obj[prop]);

将您的对象传递给此函数(这适用于任何对象):

function printObject(obj)
  for(var prop in obj){
   if (obj.hasOwnProperty(prop)) {
    console.log(prop + ":\t" + obj[prop]);
   }
 }
Run Code Online (Sandbox Code Playgroud)

您还可以通过使用获得非常相似的输出(但带引号)

JSON.stringify(obj, null, 2); 
Run Code Online (Sandbox Code Playgroud)

这将基本上以 jason 格式打印您的对象,并将使用最后一个参数(2)作为分隔符空格的数量。