Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function jsonToHTMLTable(data) {
- // Mask
- let escapeHTML = function(unsafe) {
- return unsafe.replace(/[&<"']/g, function(m) {
- switch (m) {
- case '&':
- return '&';
- case '<':
- return '<';
- case '"':
- return '"';
- default:
- return ''';
- }
- });
- };
- // data = data.map(x => JSON.parse(x))[0]; -- IF the input comes in a ARRAY
- let tHs = Array.from(Object.keys(data[0]));
- let tRs = data.map(x => Object.values(x).map(y => escapeHTML(String(y))))
- // Starting Table tag:
- let result = '<table>\n';
- // Adding the Headings Table Row:
- let headings = '<tr>'
- tHs.map(th => headings += `<th>${th}</th>`)
- headings += '</tr>\n'
- result += headings;
- // Adding the Table Data:
- tRs.map(tr => {
- let row = '<tr>';
- tr.map(element => row += `<td>${element}</td>`);
- row += '</tr>\n';
- result += row;
- })
- // Ending Table Tag:
- result += '</table>'
- console.log(result);
- }
- // jsonToHTMLTable(['[{"Name":"Tomatoes & Chips","Price":2.35},{"Name":"J&B Chocolate","Price":0.96}]']); // Should return:
- // <table>
- // <tr><th>Name</th><th>Price</th></tr>
- // <tr><td>Tomatoes & Chips</td><td>2.35</td></tr>
- // <tr><td>J&B Chocolate</td><td>0.96</td></tr>
- // </table>
- jsonToHTMLTable([{"Name":"Tomatoes & Chips","Price":2.35},{"Name":"J&B Chocolate","Price":0.96}])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement