2013-09-22 193 views
0

我正在嘗試訪問位於數組內部的單元中的元素,這是另一個數組中的內部單元。訪問嵌套的數組元素。

我試過幾種方法,但一切都返回undefined。

JSON:

[ 
{"assignment":"Tom" , "cell":["Tom", "2013-10-06", "Client 3", "Activity", "Scheduled" ]} 
] 

的jquery:

$.getJSON('data/gridData1.json',function(json){ 
       var grid = json; 
       filterGrid(grid, ele); 
      }); 

此代碼返回數組完全正常。

的javascript:

function filterGrid(filter, ele){ 
var types = ['Activity','Alert','Lead','Notification']; 
var newTable = []; 
var cs1 = $("option:selected", ele).attr("class"); 
var option = $("select[name='datagrid_filter'] option:selected").text().trim(); 
if(cs1 == 'type'){ 
    for(var i = 0; i < types.length; i++){ 
     if(types[i]==option){ 
      for(var k = 0; k < filter.length; k++){ 
       if(**filter[0][0][0].value==option**){ 
         newTable.push(filter[k]); 
        } 
       } 
       break; 
      } 
     } 
    } 
buildGrid(newTable); 
} 

不返回任何東西,包括第一要素。 任何想法都會很棒。

+2

什麼是「過濾器」? –

+1

我沒有看到JSON和'filter'之間的連接。 'filterGrid()'做了什麼? – JJJ

+0

我知道我從json獲取信息。這不是問題。問題在於嵌入到所有嵌套數組中的元素 – user2671355

回答

1

你的數組有一個元素,它是一個對象,所以filter[0]爲你提供了那個對象。

該對象有兩個屬性,assignmentcell,所以filter[0].assignment給你「湯姆」和filter[0].cell帶給你內在的陣列。

內陣列中有filter[0].cell.length項,其中第一個是filter[0].cell[0],其中第二個是filter[0].cell[1]

遍歷內陣列中的項目執行此操作:

 for(var k = 0; k < filter[0].cell.length; k++){ 
      if(filter[0].cell[k]==option){ 
       newTable.push(filter[0].cell[k]); 
       break; 
      } 
     } 

...但它是一種笨拙的重複filter[0].cell無處不在,所以你可以添加其他變量是內數組的引用:

 var cell = filter[0].cell; 
     for(var k = 0; k < cell.length; k++){ 
      if(cell[k]==option){ 
       newTable.push(cell[k]); 
       break; 
      } 
     } 

您試圖使用filter[0][0][0].value的代碼不起作用,因爲您無法通過數字索引訪問對象屬性,除非實際屬性名稱是數字,並且在任何情況下您都不希望.value位結束。

+0

非常感謝你 – user2671355