在for循环中创建关联数组

时间:2012-12-28 22:09:29

标签: javascript xml for-loop multidimensional-array associative-array

我有一个大的xml文档,我正试图在javascript中处理成一个数组。

<DR>
   <C>
     <SWDGDRC>
       <CID>0</CID>
       <V>06/01/2012 00:00:00</V>
     </SWDGDRC>
     <SWDGDRC>
       <CID>1</CID>
       <V>1131</V>
     </SWDGDRC>
     <SWDGDRC>
       <CID>2</CID>
       <V>28800</V>
     </SWDGDRC>
   </C>
   <rowid>0</rowid>
</DR>
<DR>
   <C>
     <SWDGDRC>
       <CID>0</CID>
       <V>06/02/2012 00:00:00</V>
     </SWDGDRC>
     <SWDGDRC>
       <CID>1</CID>
       <V />
     </SWDGDRC>
     <SWDGDRC>
       <CID>2</CID>
       <V />
     </SWDGDRC>
   </C>
   <rowid>1000</rowid>

它由多个DR(datarow)组成,每个DR都有多个C(列)和一个rowid。 我正在尝试将所有这些数据循环到一个关联数组中:

    for(var i=0; i < DR.length; i++) {          // loop DR
        for(var j=0; j < DR[i].getElementsByTagName('C').length; j++) {    // loop C
            for(var k=0; k < DR[i].getElementsByTagName('C')[j].getElementsByTagName('SWDGDRC').length; k++) {   //loop SWDGDRC
                columnData[i] = {
                    "rowid": DR[i].getElementsByTagName('rowid')[0].textContent,
                    "column": {
                       columnID: DR[i].getElementsByTagName('C')[j].getElementsByTagName('SWDGDRC')[k].getElementsByTagName('CID')[0].textContent,
                       value:DR[i].getElementsByTagName('C')[j].getElementsByTagName('SWDGDRC')[k].getElementsByTagName('V')[0].textContent
                    }
               };
            }
        }
    }

问题是我想在“column”键中创建一个新数组,它循环所有的C(列)数据,所以我可以使用以下内容访问这些数据:columnData [0] ['column'] [0 ] [ 'ColumnID的']

2 个答案:

答案 0 :(得分:0)

DRCollection [] - &gt; DRCollection [0] = row_id,DRCollection [1] = colCollection []。

答案 1 :(得分:0)

for(var i=0; i < DR.length; i++) {          // loop DR
        for(var j=0; j < DR[i].getElementsByTagName('C').length; j++) {    // loop C
            columnData[i] = new Array(DR[i].getElementsByTagName('C')[j].getElementsByTagName('SWDGDRC').length);
            columnData[i] = {
                rowid: DR[i].getElementsByTagName('rowid')[0].textContent
            }
            for(var k=0; k < DR[i].getElementsByTagName('C')[j].getElementsByTagName('SWDGDRC').length; k++) {   //loop SWDGDRC
                columnData[i][k] = {
                    columnID: DR[i].getElementsByTagName('C')[j].getElementsByTagName('SWDGDRC')[k].getElementsByTagName('CID')[0].textContent,
                    value:DR[i].getElementsByTagName('C')[j].getElementsByTagName('SWDGDRC')[k].getElementsByTagName('V')[0].textContent
                };
            }
        }
    }

使用前面的代码修复了它。首先,我创建一个新数组,其中包含我要循环的数组的长度,然后设置'rowid'字段。这样我就可以通过以下方式访问我的数据:columnData [0] [0] ['columnID']