我正在尝试访问位于数组内部的单元格中的元素,该元素位于另一个数组中。
我尝试了几种方法,但一切都返回未定义。
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);
}
不返回任何内容,包括第一个元素。 任何想法都会很棒,那就是。
答案 0 :(得分:1)
您的数组有一个元素,它是一个对象,因此filter[0]
会为您提供该对象。
该对象有两个属性,assignment
和cell
,因此filter[0].assignment
为您提供“Tom”,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
的代码无效,因为您无法通过数字索引访问对象属性,除非实际属性名称是数字,并且在任何情况下您都不希望{ {1}}结尾。