有没有办法过滤掉数组中以字母a开头的项目。即
var fruit = 'apple, orange, apricot'.split(',');
fruit = $.grep(fruit, function(item, index) {
return item.indexOf('^a');
});
alert(fruit);
答案 0 :(得分:2)
三件事:
', '
分割,而不是','
indexOf
不会使用正则表达式,而是字符串,因此您的代码会搜索文字^
。如果要使用正则表达式,请使用search
。indexOf
(和search
)确实会返回找到受欢迎的字词的索引。您必须将其与您的期望进行比较:== 0
。或者,您可以使用返回布尔值的正则表达式test
方法。
alert('apple, orange, apricot'.split(', ').filter(function(item, index) {
return item.indexOf('a') == 0;
}));
alert('apple, orange, apricot'.split(', ').filter(function(item, index) {
return /^a/.test(item);
}));
答案 1 :(得分:2)
在检查之前,您必须trim
item
的空格。
正则表达式检查是否以:^a
var fruit = 'apple, orange, apricot'.split(',');
fruit = $.grep(fruit, function (item, index) {
return item.trim().match(/^a/);
});
alert(fruit);
其他解决方案:
var fruits = [];
$.each(fruit, function (i, v) {
if (v.match(/^a/)) {
fruits.push(v);
}
});
alert(fruits);
答案 2 :(得分:1)
你可以这样使用charAt
:
var fruit = 'apple, orange, apricot'.split(', ');
fruit = $.grep(fruit, function(item, index) {
return item.charAt(0) === 'a';
});
alert(fruit);