根据复选框条件值过滤数组

时间:2018-04-10 08:36:20

标签: javascript arrays filtering

所以,我有点卡住了。我正在根据另一个数组的值过滤数组。当用户单击一个复选框时,年份值被推送到一个数组(checkedBoxes),然后填充yearMarker数组,满足条件,如果marker.year(来自mapMarkers数组)条目等于CheckedBoxes数组中的任何值。然后将其传递给getMarkers函数,该函数填充我正在处理的地图。一切都很完美。但是,当我单击取消选中该框时,它不起作用。如果我记录checkedBoxes数组,我可以看到年份正在被删除。填充/替换yearMarkers的代码与选中状态相同,就像创建地图标记的功能一样。但它不起作用。任何帮助理顺我的想法将不胜感激。

subFilter.forEach(item => {
    const elm = item;
    item.addEventListener('click', function () {
        if (elm.checked) {
            markersLayer.clearLayers();
            checkedBoxes.push(elm.value);
            yearMarkers = mapMarkers.filter(marker => checkedBoxes.includes(marker.year));
            getMarkers(yearMarkers, markersLayer);
        } else{
            checkedBoxes = checkedBoxes.filter(entry => entry !== elm.value);
            yearMarkers = mapMarkers.filter(marker => checkedBoxes.includes(marker.year));
            getMarkers(yearMarkers, markersLayer);
            console.log('unchecked');
            console.log(checkedBoxes);
        }
    })

0 个答案:

没有答案