我有一个包含选项的<SELECT multiple="multiple">
框。
我将所选选项存储在 JS 变量 - selectedFeatures
中。
我想将selectedFeatures
选项的数组变量传递给jQuery.inArray()
- 但该函数仅用于获取和检查一个值。
如果我实际指定了如下所示元素的索引,我可以在地图上显示/隐藏(或过滤)标记:selectedFeatures[0]
内的inArray()
..但由于我可以从选择框中选择多个选项,因此这种过滤方法不起作用。
如何使用 JS / jQuery 检查另一个数组中的项目数组?
// store selected options as an array of string elements inside the variable
var selectedFeatures = $("#features").val();
// for every element inside 'markers.houses' array...
$(markers.houses).each(function(index, elem){
// check if any of the values inside the 'selectedFeatures' array are found
// also inside a sub-array 'features' inside every element of 'markers.houses'
// array. if 'true' show that particular marker, otherwise hide the marker
if(jQuery.inArray(selectedFeatures, elem.features) !== -1 || jQuery.inArray(selectedFeatures, elem.features) > -1){
markers.houseMarkers[index].setVisible(true);
}else{
markers.houseMarkers[index].setVisible(false);
}
});
图1.1 - 将选定的选项存储在数组变量中并与
jQuery.inArray()
一起使用
答案 0 :(得分:1)
您要求的内容可以通过PHP的array_diff
函数解决。我知道你没有使用PHP,但这就是array_diff
on PHPJS的原因,这个项目致力于将PHP函数移植到JavaScript中。
无论如何,要解决此问题,您基本上想要致电array_diff(selectedFeatures,elem.features).length == 0
。 (您可能需要交换参数,我不确定哪个数组是您的问题中的哪一个)
array_diff
返回第一个数组中不存在的元素。如果第一个数组中的所有元素也在第二个数组中(即array1是array2的子集),则返回的数组将为空,因此其长度为零。
答案 1 :(得分:1)