如何一起应用过滤器?
How to apply filters together?
我在带有下拉过滤器的 Google 地图上做了标记,这些过滤器单独使用时效果非常好。但是,我希望过滤器同时考虑所有三个下拉列表。
这是我的代码:https://jsfiddle.net/h4cv57tb/
不知何故应该合并 3 个过滤器函数,但不幸的是我不知道如何...
以下是应该合并的过滤器函数:
//Filter by type
filterMarkers = function(category) {
for (i = 0; i < gmarkers1.length; i++) {
marker = gmarkers1[i];
// If is same category or category not picked
if (marker.category == category || category.length === 0) {
marker.setVisible(true);
}
// Categories don't match
else {
marker.setVisible(false);
}
}
}
//FILTER by ripening time
filterMarkersEres = function(eres) {
for (i = 0; i < gmarkers1.length; i++) {
marker = gmarkers1[i];
var ereshonap = marker.eres;
// If is same category or category not picked
if (ereshonap.includes(parseInt(eres)) || eres.length === 0) { //
marker.setVisible(true);
}
// Categories don't match
else {
marker.setVisible(false);
}
}
}
//FILTER by place
filterMarkersHely_tipus = function(hely_tipus) {
for (i = 0; i < gmarkers1.length; i++) {
marker = gmarkers1[i];
// If is same category or category not picked
if (marker.hely_tipus == hely_tipus || hely_tipus.length === 0) {
marker.setVisible(true);
}
// Categories don't match
else {
marker.setVisible(false);
}
}
}
在此先感谢您的帮助!
确保查看重复代码的位置,并在可行的情况下简单地合并不同的区域。要将这些函数组合成一个函数,只需将 if 条件组合在一起即可。
filterMarkers = function(category = null, eres = null, hely_tipus = null) {
for (i = 0; i < gmarkers1.length; i++) {
marker = gmarkers1[i];
ereshonap = marker.eres;
visible = false;
if (category){
if (marker.category == category || category.length === 0) {
visible = true;
}
}
if (eres) {
if (ereshonap.includes(parseInt(eres)) || eres.length === 0) {
visible = true;
}
}
if (hely_tipus) {
if(marker.hely_tipus == hely_tipus) {
visible = true;
}
}
if (visible) {
marker.setVisible(true);
} else {
marker.setVisible(false);
}
}
}
我在带有下拉过滤器的 Google 地图上做了标记,这些过滤器单独使用时效果非常好。但是,我希望过滤器同时考虑所有三个下拉列表。
这是我的代码:https://jsfiddle.net/h4cv57tb/
不知何故应该合并 3 个过滤器函数,但不幸的是我不知道如何...
以下是应该合并的过滤器函数:
//Filter by type
filterMarkers = function(category) {
for (i = 0; i < gmarkers1.length; i++) {
marker = gmarkers1[i];
// If is same category or category not picked
if (marker.category == category || category.length === 0) {
marker.setVisible(true);
}
// Categories don't match
else {
marker.setVisible(false);
}
}
}
//FILTER by ripening time
filterMarkersEres = function(eres) {
for (i = 0; i < gmarkers1.length; i++) {
marker = gmarkers1[i];
var ereshonap = marker.eres;
// If is same category or category not picked
if (ereshonap.includes(parseInt(eres)) || eres.length === 0) { //
marker.setVisible(true);
}
// Categories don't match
else {
marker.setVisible(false);
}
}
}
//FILTER by place
filterMarkersHely_tipus = function(hely_tipus) {
for (i = 0; i < gmarkers1.length; i++) {
marker = gmarkers1[i];
// If is same category or category not picked
if (marker.hely_tipus == hely_tipus || hely_tipus.length === 0) {
marker.setVisible(true);
}
// Categories don't match
else {
marker.setVisible(false);
}
}
}
在此先感谢您的帮助!
确保查看重复代码的位置,并在可行的情况下简单地合并不同的区域。要将这些函数组合成一个函数,只需将 if 条件组合在一起即可。
filterMarkers = function(category = null, eres = null, hely_tipus = null) {
for (i = 0; i < gmarkers1.length; i++) {
marker = gmarkers1[i];
ereshonap = marker.eres;
visible = false;
if (category){
if (marker.category == category || category.length === 0) {
visible = true;
}
}
if (eres) {
if (ereshonap.includes(parseInt(eres)) || eres.length === 0) {
visible = true;
}
}
if (hely_tipus) {
if(marker.hely_tipus == hely_tipus) {
visible = true;
}
}
if (visible) {
marker.setVisible(true);
} else {
marker.setVisible(false);
}
}
}