假设你有一个数组:
var arrStateCityAll=['CA_Alameda','CA__Pasadena','CA_Sacramento','NY_Albany','NY_Buffalo','NY_Ithaca']
是否有 easy 方式使用javascript和/或jQuery过滤arrStateCityAll以获取新数组(arrStateCityAll的子集);像这样的东西:
// return's ['CA_Alameda','CA__Pasadena','CA_Sacramento']
var arrStateCityCA=FilterArray('CA',arrStateCityAll);
答案 0 :(得分:5)
可能你想对每个项目做一个正则表达式。您可以使用jQuery的grep
函数执行此操作。
答案 1 :(得分:3)
您可以使用javascript的Array.filter。
var arrStateCityAll = ['CA_Alameda','CA__Pasadena','CA_Sacramento','NY_Albany','NY_Buffalo','NY_Ithaca']
var arrStateCityCA = arrStateCityAll.filter( function (element) {
return element.indexOf("CA_") == 0;
});
上面链接的mozilla文档为没有隐式支持过滤器的浏览器提供了解决方案。
答案 2 :(得分:2)
您可以使用jQuery.grep
var arrStateCityCA =
$.grep(arrStateCityAll,function(el,i){return (el.substring(0,2)=='CA')});
要实现您可以执行的帖子中所示的实际FilterArray功能
function FilterArray(state,arr){
return $.grep(arr,
function(el,i) {return (el.substring(0,2)==state)}
);
}
这做了一些假设。
状态总是2个字符。
状态永远是前2个字符。
当然还记得区分大小写(此函数 区分大小写),即'CA'
不等于'Ca'
。
答案 3 :(得分:2)
这应该有用。
var arrStateCityCA = [];
for (var i = 0;i<arrStateCityAll.length;i++){
if (arrStateCityAll[i].substr(0,2) == 'CA'){
arrStateCityCA.push(arrStateCityAll[i]);
}
}
答案 4 :(得分:1)
如果您要在州名和城市名称之间使用非核心,则可以拆分下划线并针对第一个数组值进行测试
function getSubSetByState(set,state) {
var result = [];
for(var i=0,l=set.length;i<l;++i) {
if(set[i].split('_')[0] === state) {
result.push(set[i]);
}
}
return result;
}
使用if给它一组位置,然后是你要搜索的状态。