const fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
const filterItems = (needle, heystack) => {
let query = needle.toLowerCase();
return heystack.filter(item => item.toLowerCase().indexOf(query) >= 0);
}
console.log(filterItems('ap', fruits)); // ['apple', 'grapes']
console.log(filterItems('ang', fruits)); // ['mango', 'orange']
var fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
function filterItems(needle, heystack) {
var query = needle.toLowerCase();
return heystack.filter(function(item) {
return item.toLowerCase().indexOf(query) >= 0;
})
}
console.log(filterItems('ap', fruits)); // ['apple', 'grapes']
console.log(filterItems('ang', fruits)); // ['mango', 'orange']
Примечание: для очень больших массивов вы можете рассмотреть возможность их рефакторинга для асинхронных / ожидающих функций
Это устаревший ответ
Для поиска в массиве с помощью jQuery вы можете использовать jQuery.grep()
или
jQuery.map()
. Оба возвращают новый массив с отфильтрованными элементами, используя
функция обратного вызова.
Самая быстрая реализация (без учета регистра) использует indexOf
и
toUpperCase
в обратном вызове:
var search_term = 'oo'; // your search term as string
var search = search_term.toUpperCase();
var array = jQuery.grep(a, function(value) {
return value.toUpperCase().indexOf(search) >= 0;
});
Если вам не нужен поиск без учета регистра, вы можете удалить оба параметра .toUpperCase()
, чтобы ускорить его.
Более гибким, но гораздо более медленным (достаточно хорошим для небольших массивов) является использование
регулярное выражение:
var search_term = "oo"; // search term
var search = new RegExp(search_term , "i");
var arr = jQuery.grep(a, function (value) {
return search.test(value);
});
или
var search_term = "oo"; // search term
var search = new RegExp(search_term , "i");
var arr = jQuery.map(a, function (value) {
return value.match(search) ? value : null;
});
Регулярные выражения позволяют сделать поиск гораздо более сложным, чем %value%
. Однако не используйте его, если он вам не нужен, потому что это
во много раз медленнее.
вы должны получить массив arr
с соответствующими элементами