Advertisement
SimeonTs

JSON to HTML Table

May 24th, 2020
1,433
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function jsonToHTMLTable(data) {
  2.     // Mask
  3.     let escapeHTML = function(unsafe) {
  4.         return unsafe.replace(/[&<"']/g, function(m) {
  5.             switch (m) {
  6.                 case '&':
  7.                     return '&amp;';
  8.                 case '<':
  9.                     return '&lt;';
  10.                 case '"':
  11.                     return '&quot;';
  12.                 default:
  13.                     return '&#039;';
  14.             }
  15.         });
  16.     };
  17.  
  18.     // data = data.map(x => JSON.parse(x))[0];  -- IF the input comes in a ARRAY
  19.  
  20.     let tHs = Array.from(Object.keys(data[0]));
  21.     let tRs = data.map(x => Object.values(x).map(y => escapeHTML(String(y))))
  22.  
  23.     // Starting Table tag:
  24.     let result = '<table>\n';
  25.  
  26.     // Adding the Headings Table Row:
  27.     let headings = '<tr>'
  28.     tHs.map(th => headings += `<th>${th}</th>`)
  29.     headings += '</tr>\n'
  30.     result += headings;
  31.  
  32.     // Adding the Table Data:
  33.     tRs.map(tr => {
  34.         let row = '<tr>';
  35.         tr.map(element => row += `<td>${element}</td>`);
  36.         row += '</tr>\n';
  37.         result += row;
  38.     })
  39.  
  40.     // Ending Table Tag:
  41.     result += '</table>'
  42.     console.log(result);
  43.  
  44.  
  45. }
  46.  
  47. // jsonToHTMLTable(['[{"Name":"Tomatoes & Chips","Price":2.35},{"Name":"J&B Chocolate","Price":0.96}]']);  // Should return:
  48. // <table>
  49. // <tr><th>Name</th><th>Price</th></tr>
  50. // <tr><td>Tomatoes &amp; Chips</td><td>2.35</td></tr>
  51. // <tr><td>J&amp;B Chocolate</td><td>0.96</td></tr>
  52. // </table>
  53.  
  54.  
  55. jsonToHTMLTable([{"Name":"Tomatoes & Chips","Price":2.35},{"Name":"J&B Chocolate","Price":0.96}])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement