如何一起应用过滤器?

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);
        }
    }
}