Formatera text med tabbar eller mellanslag i console.log - javascript/typescript


Hur kan nedanstående console.log-utdata formateras? Namnkolumnen kan ha olika längd så kolumnerna är inte korrekt justerade. Exempel:-

Svar #1

använd \t för verklig tab i utdata.

console.log('name1\t14')
console.log('name2nam2\t12')
console.log('name3Nam3Nam\t13')
console.log('name1\t123421')
console.log('name1\t912421')

men förmodligen är det du vill ha console.table MDN

Svar #2

Om du inte har tillgång till console.table() (vilket är otillgängligt i vissa sammanhang, som Google App Scripts-loggning), kan du använda string.padEnd() för att göra alla dina strängar lika långa. Den tar två argument: den önskade längden och tecknet att fylla strängen med. Detta ger dig ett tabell-liknande format.

Exempel där vi vill att den första kolumnen ska vara 28 tecken bred:

  var keys = someObject.getKeys();
  var log = "";
  keys.forEach(key => {
    log += `${key.padEnd(28, ' ')}: \t${props.getProperty(key)}\n`;
  });
  console.log(log);

Skriv ut något som detta:

previousRevisedWordCount    :   47690.0
previousPercent             :   0.4531134139945382
previousUnrevisedFileCount  :   59.0
previousUnrevisedWordCount  :   62924.0
previousDay                 :   Fri Feb 16 18:18:38 GMT-06:00 2024
previousRevisedFileCount    :   36.0

Om du itererar genom en massa strängar och inte vet längden, kan du först hitta den längsta, och sedan kalla string.padEnd(n + 1, " "), där n är längden på den längsta strängen.