如何遍历Javascript对象的属性名称?

我想从Javascript对象中获取属性名称来dynamic地构build表。 例:

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); } 

会提醒:

 name=fname value=joe name=lname value=smith name=number value=34 

然后我可以使用这样的对象来build立一个表格:

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

生产:

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

UPDATE

感谢这个答案,我从JavaScript对象中使用列表中第一个对象的属性名称生成了一个表格:

  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; } 

for...in循环中 :

 for (var key in obj) { console.log(' name=' + key + ' value=' + obj[key]); // do some more stuff with obj[key] } 

在JavaScript 1.8.5中, Object.getOwnPropertyNames返回直接在给定对象上find的所有属性的数组。

 Object.getOwnPropertyNames ( obj ) 

另一个方法Object.keys ,它返回一个包含所有给定对象自己的枚举属性名称的数组。

 Object.keys( obj ) 

我使用forEach在obj中列出值和键,与for (var key in obj) ..

 Object.keys(obj).forEach(function (key) { console.log( key , obj[key] ); }); 

这一切都是ECMAScript中的新function,方法getOwnPropertyNameskeys将不支持旧浏览器。