Programing

Javascript 객체의 속성 이름을 반복하는 방법은 무엇입니까?

crosscheck 2020. 11. 17. 07:48
반응형

Javascript 객체의 속성 이름을 반복하는 방법은 무엇입니까?


테이블을 동적으로 작성하기 위해 Javascript 개체에서 속성 이름을 얻고 싶습니다. 예:

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

그런 다음 다음과 같은 개체를 사용하여 테이블을 만들 수 있습니다.

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 |

최신 정보

답변 덕분에 헤더 목록에있는 첫 번째 개체의 속성 이름을 사용하여 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주어진 객체에서 직접 찾은 모든 속성의 배열을 반환합니다.

Object.getOwnPropertyNames ( obj )

Object.keys주어진 객체의 모든 열거 가능한 속성 의 이름을 포함하는 배열을 반환하는 또 다른 메서드 .

Object.keys( obj )

forEachobj의 값과 키를 나열 하는 데 사용 했습니다.for (var key in obj) ..

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

This all are new features in ECMAScript , the mothods getOwnPropertyNames, keys won't supports old browser's.

참고URL : https://stackoverflow.com/questions/1876485/how-to-iterate-through-property-names-of-javascript-object

반응형