我需要一个提示。我不是程序员,但我喜欢把自己的机会自动化,请原谅我,如果问题太基础了。
我正在使用 Google Maps API ,并且在某些时候需要完成过滤器以定位InfoWindow
的内容。
我有一张包含各种过滤器的地图,这些过滤器适用于标记,应扩展到InfoWindow
的内容。
我的JSON
内容为InfoWindow
,我以这种方式应用过滤器:(ards = JSON file)
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;
});
但是它没有用,他没有将值应用于结果,只有第一部分。
我的问题是,如何才能完成这个动态过滤器?
感谢。
答案 0 :(得分:1)
由于每个过滤器都是独立的,因此每个过滤器都需要一个标志,指定是否要检查该标准。如果检查了该标志,那么使用filterFlag和标准的结果(这是用于过滤器功能)。像这样:
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;
});
如果您不明白这一点,请告诉我。我需要你的代码,以便我可以直接修复它。