Jak iterować poprzez nazwy właściwości obiektu Javascript?
Chciałbym pobrać nazwy właściwości z obiektu Javascript, aby dynamicznie zbudować tabelę. Przykład:
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);
}
Ostrzega:
name=fname value=joe
name=lname value=smith
name=number value=34
Wtedy mógłbym zbudować tabelę używając takiego obiektu:
var obj = { 'players': [
{ 'fname': 'joe', 'lname': 'smith', 'number': '34'} ,
{ 'fname': 'jim', 'lname': 'Hoff', 'number': '12'} ,
{ 'fname': 'jack', 'lname': 'jones', 'number': '84'}
] };
Do produkcji:
| fname | lname | number |
|-------|--------|---------|
| joe | smith | 34 |
| jim | Hoff | 12 |
| jack | jones | 84 |
UPDATE
Dzięki odpowiedzi stworzyłem tabelę z obiektów Javascript używając nazw właściwości z pierwszego obiektu na liście nagłówków:
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;
}
2 answers
Użycie for...in
pętla :
for (var key in obj) {
console.log(' name=' + key + ' value=' + obj[key]);
// do some more stuff with obj[key]
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-02 16:41:03
W JavaScript 1.8.5, Object.getOwnPropertyNames
zwraca tablicę wszystkich właściwości znalezionych bezpośrednio na danym obiekcie.
Object.getOwnPropertyNames ( obj )
I inna metoda Object.keys
, która zwraca tablicę zawierającą nazwy wszystkich właściwości wyliczeniowych danego obiektu .
Object.keys( obj )
Użyłem forEach
do listy wartości i kluczy w obj, tak samo jak for (var key in obj) ..
Object.keys(obj).forEach(function (key) {
console.log( key , obj[key] );
});
To wszystko są nowe funkcje w ECMAScript, the mothods getOwnPropertyNames
, keys
nie obsługuje starej przeglądarki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-16 07:05:11