【发布时间】:2014-12-11 19:53:31
【问题描述】:
这是我目前的过滤功能(相当不完整)
$('input:checkbox.types').click(function(){
filterMarkers();
});
function filterMarkers() {
var checked = [];
$('input:checkbox.types:checked').each(function(){
checked.push($(this).val());
});
checked.sort();
var andor = '';
var andor = $('[name="and-or"]:checked').val();
if(andor == 1) {
// and
console.log(checked);
for (var i = 0; i < markers.length; i++) {
var types = markers[i]['types'].split(",");
types.sort();
console.log(types);
}
} else {
// or
}
}
这是我目前所拥有的图片。
为简单起见,让我们这样说。 A = 选中的复选框 B = 地图标记迭代/当前迭代标记中具有当前项目值的数组
我能够获得选中复选框的值。我还能够将每个标记的逗号分隔字符串转换为数组。我希望能够检查 B 是否包含 A (OR) 中的任何一个,并且能够检查 B 是否必须包含 A (AND)。
有什么想法吗?
对于那些想要对我正在努力完成的事情有“感觉”的人来说,这是有问题的页面。谢谢!
https://www.cablework.co/company
此页面输出我当前的控制台。
一旦我弄清楚这一点,我就可以根据结果隐藏/显示标记。
【问题讨论】:
-
看起来您正在使用 JQuery。 JQuery 库有一个名为
$.inArray(value, array)的函数。您可以在迭代检查时使用它。 -
所以你希望函数返回一个数组来表示哪些标记通过了测试,对吗?编辑:或者不,如果每个标记的测试失败/通过,你只想做点什么。
-
如果框 1 和 4 被选中,当遍历标记“类型”数组时,对于我的“AND”语句,标记迭代必须包含选中的,这将导致 true(就像标记数组是 [1,4,5,7] 是真的,因为它包含所有已检查的),对于我的“OR”语句,如果标记包含 1 或 4 则为真。
标签: javascript arrays dynamic-arrays