2015-05-13 1 views
0

Есть ли способ сделать это, фильтруя только элементы в массиве, которые начинаются с буквы a. т.е.Как я могу найти все элементы в массиве javaScript, которые начинаются с определенной буквы

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

Попробуйте это в JQuery: 'вар $ beginwitha = $ (": input [name^= 'a']") '. Затем поместите эту переменную в оператор indexOf. –

ответ

1

три вещи:

  • Вы хотите разделить на ', ', не ','
  • indexOf не принимает регулярное выражение, но строка, так что ваш код ищет буквального ^. Используйте search, если вы хотите использовать регулярные выражения.
  • indexOfsearch) действительно возвращают индекс, где они находят искомый термин. Вам придется сравнить это с вашим ожиданием: == 0. Кроме того, вы можете использовать метод regex 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); 
})); 
+0

хороший. Приветствия за это – user2678132

2

Вы должны trim пространства от item перед проверкой.

Regex, чтобы проверить, если начать с: ^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); 
+0

Фантастика. Большое спасибо. Im очень новый для javascript так высоко оценил – user2678132

1

Вы можете использовать charAt так:

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

Brilliant. Приветствия за это – user2678132

+0

Да. Пожалуйста. –

Смежные вопросы