Skip to content

Instantly share code, notes, and snippets.

@Daniel-Hug
Last active June 26, 2017 09:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Daniel-Hug/62b5e184f19624ed3973a973c84b3566 to your computer and use it in GitHub Desktop.
Save Daniel-Hug/62b5e184f19624ed3973a973c84b3566 to your computer and use it in GitHub Desktop.
JS function: stringify table (2D array)
function stringifyTable(arr) {
var longest = 0;
return arr.map(function(innerArr) {
innerArr = trimArray(innerArr).map(val => '' + val);
longest = Math.max(longest, Math.max(innerArr.map(val => val.length)));
return innerArr;
}).map(function(innerArr) {
return innerArr.map(function(val) {
return padLeft('' + val, longest, ' ');
}).join();
}).join(',\n');
}
// trim undefined values from ends of array
function trimArray(arr) {
for (var start = 0; start < arr.length && !(start in arr); start++);
for (var end = arr.length; end > start && !(end - 1 in arr); end--);
return arr.slice(start, end);
}
// pad string with extra characters on left to ensure at least len characters
function padLeft(str, len, char) {
return str.length >= len ? str : new Array(len - str.length + 1).join(char) + str;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment