如何找到以某些字母开头的javaScript数组中的所有元素

时间:2015-05-13 09:36:27

标签: javascript jquery arrays indexof

有没有办法过滤掉数组中以字母a开头的项目。即

var fruit = 'apple, orange, apricot'.split(',');
  fruit = $.grep(fruit, function(item, index) {
  return item.indexOf('^a'); 
  });
alert(fruit);

3 个答案:

答案 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);