2016-02-05 36 views
0

我需要提示。我不是一名程序員,但我喜歡把自己的流程自動化,如果問題太簡單,不好意思。Javascript - Dynamic .filter() - Json文件

我正在使用Google Maps API,並且在某些時候需要完成一個過濾器來定位我的InfoWindow的內容。

我有各種過濾器的地圖,適用於標記,並應擴展到InfoWindow的內容。

我有我的InfoWindow的內容JSON,和我申請的過濾器是這樣:(ARDS = JSON文件)

var as=$(ards).filter(function (i,n){ 
    return n.ERB===marker.getTitle(); 
}); 

for (var i=0;i<as.length;i++) 
{ .... } 

好,它的工作原理,但我需要增加更多的變數過濾。

我擁有這些標記過濾器。

var cluster = $("#CLUSTER-select").val(); 
var client = $('#cli_re-select').val(); 
var type_cli = $('#type_cli-select').val(); 
var type_recla = $('#type_recla-select').val(); 

我只舉了4個例子,但有大約10個過濾器。

過濾器是獨立的,您可以隨時選擇任何一個。

我做了這樣:

var combine = []; 
combine = []; 

if(cluster !== '0') { 
    combine.push('&& n.DESC_CLUSTER === ' + '"' + cluster + '"'); 
} 
if(cliente_recente !== '0') { 
    combine.push('&& n.CLIENT_RE === ' + '"' + client + '"'); 
} 
if(tipo_cli !== '0') { 
    combine.push('&& n.TYPE_CLI === ' + '"' + type_cli + '"'); 
} 
if(tipo_reclama !== '0') { 
    combine.push('&& n.TYPE_RECLA === ' + '"' + type_recla + '"'); 
} 

var filter_add; 
filter_add = "1 = 1"; 

for(var i=0;i<combine.length;i++){ 
    filter_add += combine[i]; 
} 

結果爲:1 = 1 && n.DESC_CLUSTER === "CTA" && n.TYPE_CLI === "SOHO"

我加在我的過濾器這個變量:

var as=$(ards).filter(function (i,n){ 
    return n.ARMARIO_ERB===marker.getTitle() && filter_add; 
}); 

但它沒有工作,他不將值應用於結果,僅應用於第一部分。

我的問題是,如何才能做到這一動態過濾器?

謝謝。

回答

1

由於每個過濾器都是獨立的,所以每個過濾器都需要一個標誌來指定是否要檢查該標準。如果該標誌被選中,則將標準的結果與filterFlag進行AND(這是用於過濾器功能)。這樣的事情:

var cluster = $("#CLUSTER-select").val(); 
var client = $('#cli_re-select').val(); 
var as=$(ards).filter(function (i,n){ 
      var filterFlag=true; 
      if(cluster !='0'){ 
       // Code for cluster 
       filterFlag = filterFlag && ____ // add result of above code : TRUE or FALSE 
      } 
      if(client != '0'){ 
       // code here 
       filterFlag = filterFlag && ____ // add result of above code : TRUE or FALSE 
      } 
      //......same for others 
      //...... 
     return filterFlag; 
    }); 

讓我知道如果你不明白這一點。我將需要你的代碼,以便我可以直接修復它。

+0

Pritesh,工作完美。謝謝。 –