如何在Ext js 4.1中过滤数组json

时间:2015-09-10 03:56:40

标签: javascript extjs

将此视为我的json数据。 我想使用值“LAN”过滤数据中的“gridValues”。我使用了Ext js过滤方法。它不会返回过滤数据。

var tableData = [
                {
                    "TABLE_TITLE": "Details",
                    "tableColumns": {
                        "COLUMNNAME_0": "Interface",
                        "COLUMNNAME_1": "Conversation",
                        "COLUMNNAME_2": "Data Flow(KB)"

                    },
                    "gridValues": [
                        {
                            "COLUMVal_0": "LAN",
                            "COLUMVal_1": "192.168.9.113 to 61.16.173.233",
                            "COLUMVal_2": "1132.7"

                        },
                        {
                            "COLUMVal_0": "TATA",
                            "COLUMVal_1": "192.168.8.67 to 111.221.115.98",
                            "COLUMVal_2": "619.72"

                        },
                        {
                            "COLUMVal_0": "CITI",
                            "COLUMVal_1": "192.168.8.60 to 23.6.112.201",
                            "COLUMVal_2": "619.2"

                        }

                    ]
                }
            ];

我使用以下代码过滤数据:

var arry =[]; 
var fliterarry =[]; 
var i,u; 
for (i=0;i<tableData.length;i++) {
    arry.push(tableData[i].gridValues);
    } 
var arryFtr = arry.filter(function(e){ 
for (u=0;u<e.length;u++) { 
    if(e[u].COLUMVal_0 === 'TATA'){ 
      tableData[u].gridValues.push(e[u]); 
     } 
    return e[u].COLUMVal_0 == 'TATA';
 } 
return fliterarry 
}); 

1 个答案:

答案 0 :(得分:2)

我想你想用COLUMVal_0等于&#34; TATA&#34;来过滤数据。 ,对吗?

在您的函数中尝试以下代码:

var filterArray = [];
for ( tdKey in tableData ) {
    for ( gvKey in tableData[tdKey].gridValues ) {
        if ( tableData[tdKey].gridValues[gvKey].COLUMVal_0 == "TATA" ) {
            filterArray.push(tableData[tdKey].gridValues[gvKey]);
        }
    }
}
return fliterarry;