0

我正在尝试访问位于数组内部单元格中的元素,该单元位于另一个数组内部。

我尝试了几种方法,但一切都返回未定义。

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);
}

不返回任何内容,包括第一个元素。任何想法都会很棒。

4

1 回答 1

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位。

于 2013-09-22T14:18:45.293 回答