所以,我有点卡住了。我正在根据另一个数组的值过滤数组。当用户单击一个复选框时,年份值被推送到一个数组(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);
}
})