Saturday, May 11, 2024
 Popular · Latest · Hot · Upcoming
171
rated 0 times [  177] [ 6]  / answers: 1 / hits: 161375  / 15 Years ago, wed, december 9, 2009, 12:00:00

I would like to get the property names from a Javascript object to build a table dynamically. Example:



var obj = {'fname': 'joe', 'lname': 'smith', 'number': '34'};

for (var i = 0; i < obj.properties.length; i++) {
alert(' name=' + obj.properties[i].name + ' value=' + obj.properties[i].value);
}


would alert:



name=fname value=joe

name=lname value=smith

name=number value=34


Then I could build a table using object like this:



var obj = { 'players': [ 
{ 'fname': 'joe', 'lname': 'smith', 'number': '34'} ,
{ 'fname': 'jim', 'lname': 'Hoff', 'number': '12'} ,
{ 'fname': 'jack', 'lname': 'jones', 'number': '84'}
] };


to produce:



| fname |  lname |  number |
|-------|--------|---------|
| joe | smith | 34 |
| jim | Hoff | 12 |
| jack | jones | 84 |


UPDATE



Thanks to the answer, I have produced a table from the Javascript objects using the property names from the first object in the list for the headers:



    function renderData() {
var obj = { 'players': [
{ 'fname': 'joe', 'lname': 'smith', 'number': '34' },
{ 'fname': 'jim', 'lname': 'jones', 'number': '12' },
{ 'fname': 'jack', 'lname': 'Hoff', 'number': '84' }
] };

var cols = GetHeaders(obj);

$('#Output').html(CreateTable(obj, cols));
}

function CreateTable(obj, cols) {
var table = $('<table></table>');
var th = $('<tr></tr>');
for (var i = 0; i < cols.length; i++) {
th.append('<th>' + cols[i] + '</th>');
}
table.append(th);

for (var j = 0; j < obj.players.length; j++) {
var player = obj.players[j];
var tr = $('<tr></tr>');
for (var k = 0; k < cols.length; k++) {
var columnName = cols[k];
tr.append('<td>' + player[columnName] + '</td>');
}
table.append(tr);
}
return table;
}

function GetHeaders(obj) {
var cols = new Array();
var p = obj.players[0];
for (var key in p) {
//alert(' name=' + key + ' value=' + p[key]);
cols.push(key);
}
return cols;
}

More From » loops

 Answers
27

Use for...in loop:



for (var key in obj) {
console.log(' name=' + key + ' value=' + obj[key]);

// do some more stuff with obj[key]
}

[#98109] Sunday, December 6, 2009, 15 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
ronniem

Total Points: 584
Total Questions: 111
Total Answers: 111

Location: Finland
Member since Sat, Nov 6, 2021
3 Years ago
;