有一系列标记,每个标记属于一个或多个类别。
如何实现搜索/过滤器以检索所有具有cat = X?
的标记例如:
Gmaps.map.markers = [
{"id":9,"cat":"3, 5, 6","lat":"52.50","lng":"13.32"},
{"id":11,"cat":"3","lat":"52.51","lng":"13.44"},
{"id":12,"cat":"1, 2, 5","lat":"47.89","lng":"10.62"},
{"id":13,"cat":"1, 2, 3, 4, 5","lat":"47.77","lng":"10.61"},
{"id":15,"cat":"1, 6","lat":"40.60","lng":"-73.44"},
{"id":16,"cat":"1, 3, 5, 9","lat":"51.89","lng":"17.16"},
{"id":17,"cat":"9","lat":"52.37","lng":"9.73"}
];
答案 0 :(得分:0)
使用正则表达式来查找是否在cat逗号分隔列表中找到了needleArray中的某些内容,如果是这样,请将该标记添加到返回的数组中。
function findMarkersContaining ( markers, needleArray ) {
var matches = [];
var markerLength = markers.length;
var needleArrayLength = needleArray.length;
for ( var i = 0; i < markerLength; i++ ) {
for ( var e = 0; e < needleArrayLength; e++ ) {
var regex = new RegExp( '(^| )' + needleArray[e] + '(,|$)' );
if ( markers[i].cat.search( regex ) !== -1 ) {
matches.push( markers[i] );
}
}
}
return matches;
}
答案 1 :(得分:0)
修改它以找到猫4 ......
function findMarkersContaining ( markers, needleArray ) {
var matches = [];
var markerLength = markers.length;
var needleArrayLength = needleArray.length;
for ( var i = 0; i < markerLength; i++ ) {
for ( var e = 0; e < needleArrayLength; e++ ) {
var singleNeedle = needleArray[e];
if ( $.inArray( singleNeedle, markers[i].cat.split(",")) !== -1 ) {
matches.push( markers[i] );
}
}
}
return matches;
};