Небольшой повторный заказ в коде.
function demo(attributes) {
var key = [];
document.write("<table border==\"1\">");
var i = 0;
for (key in attributes[i]) {
document.write("<tr>");
document.write('<td>' + '<b>' + key + '</b>' + '</td>');
while (i < attributes.length) {
if (attributes[i][key].constructor == Object) {
var levelDown = attributes[i][key];
document.write('<td>');
for(var subKey in levelDown) {
document.write(subKey + ':' + levelDown[subKey] + '<br>');
}
document.write('</td>');
} else {
document.write('<td>' + attributes[i][key] + '</td>');
}
i++;
}
i = 0;
document.write("</tr>");
}
document.write("</tr>");
document.write("</table>");
}
demo([{
"name": "Asset #",
"display_name": "Asset #",
"key": "header2",
"values": {
"MSSBL": "4-194169767930##1-2H77NZSQ",
"SNOW": "4-194169767930##1-2H77NZSQ"
},
"type": "header",
"data_type": "Text",
"editable": "N"
},
{
"name": "Serial Number",
"display_name": "Serial Number",
"key": "header3",
"values": {
"MSSBL": "21256112##1-2H77NZSQ",
"SNOW": "NA##1-2H77NZSQ"
},
"type": "header",
"data_type": "Text",
"editable": "N"
},
{
"name": "ACCOUNT NUMBER",
"display_name": "ACCOUNT NUMBER",
"key": "header6",
"values": {
"MSSBL": "532649##1-2H77NZSQ",
"SNOW": "NA##1-2H77NZSQ"
},
"type": "header",
"data_type": "Text",
"editable": "N"
}
]);
Или использование двумерных массивов для изменения порядка данных перед генерацией таблицы.
function demo(attributes) {
var colsData = [];
document.write("<table border==\"1\"><tr>");
for (key in attributes[0]) {
colsData.push([key]);
}
for (var i = 0; i < attributes.length; i++) {
var j = 0;
for (key in attributes[i]) {
var levelDown = attributes[i][key];
if (attributes[i][key].constructor == Object) {
var longList = "";
for(var subKey in levelDown) {
longList += subKey + ':' + levelDown[subKey] + '<br>';
}
levelDown = longList;
} else longList = levelDown;
colsData[j].push(levelDown);
j++;
}
}
for(var i=0;i<colsData.length;i++) {
document.write("<tr><th>" + colsData[i][0] + "</th><td>" + colsData[i].slice(1).join("</td><td>") + "</td></tr>");
}
document.write("</table>");
}
demo([{
"name": "Asset #",
"display_name": "Asset #",
"key": "header2",
"values": {
"MSSBL": "4-194169767930##1-2H77NZSQ",
"SNOW": "4-194169767930##1-2H77NZSQ"
},
"type": "header",
"data_type": "Text",
"editable": "N"
},
{
"name": "Serial Number",
"display_name": "Serial Number",
"key": "header3",
"values": {
"MSSBL": "21256112##1-2H77NZSQ",
"SNOW": "NA##1-2H77NZSQ"
},
"type": "header",
"data_type": "Text",
"editable": "N"
},
{
"name": "ACCOUNT NUMBER",
"display_name": "ACCOUNT NUMBER",
"key": "header6",
"values": {
"MSSBL": "532649##1-2H77NZSQ",
"SNOW": "NA##1-2H77NZSQ"
},
"type": "header",
"data_type": "Text",
"editable": "N"
}
]);