![](/img/trans.png)
[英]Angular2,Typescript: array map() method: Pushing nested elements. Cannot read property 'map' of undefined
[英]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]
給您該對象。
該對象具有兩個屬性, 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
無法正常工作,因為您無法通過數字索引訪問對象屬性,除非實際屬性名稱是數字,並且無論如何您都不會這樣做.value
在末尾使用.value
位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.