2013-09-22 188 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