基于类别的筛选器数组
filter array based upon categories
有一个标记数组,每个标记属于一个或多个类别。
您将如何实现搜索/过滤器来检索所有具有 cat = X 的标记?
例如:
- 所有带有 cat = 9 的标记?
- 所有带有 cat = 5 和 9 的标记?
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"}
];
像这样的东西,它使用正则表达式来查找 needleArray 中的某些内容是否在 cat 逗号分隔列表中找到,如果是这样,请将该标记添加到返回的数组中。
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;
}
修改了它以找到猫 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;
};
相关文章:
- 如何从另一个带下划线的数组中筛选带元素的数组
- 如何筛选对象的数组属性
- 根据多个值筛选数组
- 如何按对象数组中的数组属性进行筛选
- 要筛选的数组的管道值的含义:$select.search in angular
- 如何筛选对象数组
- 具有绑定与未绑定函数的数组筛选器
- 角度筛选器 - 根据值数组筛选 JSON 结果
- 基于条件数组的数组筛选器
- 根据数组筛选字符串数组
- 按键数组筛选对象
- 基于索引数组筛选数组
- 通过字符串数组筛选对象数组
- 针对所有其他数组筛选数组
- Javascript:根据数组筛选键后,在对象中找到一个值最大的键
- 使用值数组筛选多个属性的值
- 使用另一个对象数组筛选对象数组
- 数组筛选器的异步或承诺条件
- 通过另一个整数数组筛选对象数组
- 按搜索查询进行数组筛选