У меня есть большой массив, и я хочу отфильтровать его на основе строки, которую я передаю. Эта строка может состоять из одного или двух символов, вплоть до целой строки.
Вот пример массива:
var data = ["bourbon", "beer", "electric"]
Если я пройду e, я хочу результат ["electric", "beer"].
Как я могу реализовать эту функциональность?
Думаю, он хотел написать 'beer', 'electric'.
Я едва могу понять одно предложение. Пожалуйста, отредактируйте вопрос, чтобы он был более понятным и ясным, о чем вы спрашиваете.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используйте filter с includes:
var data = ["bourbon", "beer", "electric"];
const selectByLetter = l => data.filter(s => s.includes(l));
console.info(selectByLetter("e"));.as-console-wrapper { max-height: 100% !important; top: auto; }Синтаксис ES5:
var data = ["bourbon", "beer", "electric"];
var selectByLetter = function(l) {
return data.filter(function(s) {
return s.indexOf(l) > -1;
});
}
console.info(selectByLetter("e"));.as-console-wrapper { max-height: 100% !important; top: auto; }@ jack Bashford Я пытался запустить этот код, он показывает пиво, электрическое, но я хочу электрическое, пиво, как этого добиться
Итак, вы хотите отсортировать его в обратном алфавитном порядке?
Мне нужен этот тип вывода. Не могли бы вы сослаться на эту ссылку w3schools.com/howto/howto_js_filter_lists.asp
А как это отсортировано? В настоящее время он находится в порядке, указанном в массиве - следует ли инвертировать вывод?
нет, я прошу, чтобы та же функциональность панели поиска отсортировала массив.
вы можете использовать подчеркивание.
var data = ["bourbon","beer", "electric"]
var filtered = [];
var filter = function(value) {
filtered = _.filter(data, function(el) {
return el.indexOf(value)
})
return filtered;
}
console.info('filtered',filter('e'));var data = ["bourbon","beer", "electric"]
var result = data.filter(c => /e/i.test(c))
console.info('data',result);
Для решения O(N) вместо O(N^2) используйте набор (Set.has – это O(1), тогда как String.prototype.includes – это O(N)):
const data = ["bourbon", "beer", "electric"];
const setByData = data.reduce((a, str) => {
a[str] = new Set(str);
return a;
}, {});
console.info(
Object.entries(setByData)
.filter(([, set]) => set.has('e'))
.map(([str]) => str)
);@ CertainPerformance, как только я передам строковый метод, мне нужен этот тип вывода. Не могли бы вы сослаться на этот w3schools.com/howto/tryit.asp?filename=tryhow_js_filter_list
Что ты имеешь в виду? Какую именно структуру объекта вы ищете, можете ли вы ее описать?
array['пиво','бурбон,'электрический'']. передайте строку "e" сначала проверьте ее первое вхождение, а затем второе вхождение. ['electric', 'beer'] я хочу, чтобы этот тип вывода. как его достичь
products_name = ['ebay','eaby','ebb','ebbe','eaab','eeb']
search_options = []
const searched_word = "eb";
for (const key in products_name)
{
const search_count = products_name[key].search(new RegExp(searched_word, "i"));
if (search_count != -1)
{
search_options.push(products_name[key])
}
}
console.info(search_options)
Какой код вы пробовали, который не работает? На какой объект
beerвы ссылаетесь?