簡體   English   中英

訪問嵌套數組元素。

[英]Accessing nested array elements.

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

我已經嘗試了幾種方法,但是所有方法都返回未定義狀態。

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

不返回任何內容,包括第一個元素。 任何想法都很棒,那樣。

您的數組有一個元素,它是一個對象,因此filter[0]給您該對象。

該對象具有兩個屬性, assignmentcell ,因此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無法正常工作,因為您無法通過數字索引訪問對象屬性,除非實際屬性名稱是數字,並且無論如何您都不會這樣做.value在末尾使用.value位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM