Как отфильтровать всю последовательность строк в массиве с помощью javascript

У меня есть большой массив, и я хочу отфильтровать его на основе строки, которую я передаю. Эта строка может состоять из одного или двух символов, вплоть до целой строки.

Вот пример массива:

var data = ["bourbon", "beer", "electric"]

Если я пройду e, я хочу результат ["electric", "beer"].

Как я могу реализовать эту функциональность?

Какой код вы пробовали, который не работает? На какой объект beer вы ссылаетесь?

CertainPerformance 31.05.2019 09:21

Думаю, он хотел написать 'beer', 'electric'.

Kévin Bibollet 31.05.2019 09:22

Я едва могу понять одно предложение. Пожалуйста, отредактируйте вопрос, чтобы он был более понятным и ясным, о чем вы спрашиваете.

Sebastian Kaczmarek 31.05.2019 09:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
463
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Используйте 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 Я пытался запустить этот код, он показывает пиво, электрическое, но я хочу электрическое, пиво, как этого добиться

Hari Smith 31.05.2019 10:07

Итак, вы хотите отсортировать его в обратном алфавитном порядке?

Jack Bashford 31.05.2019 10:08

Мне нужен этот тип вывода. Не могли бы вы сослаться на эту ссылку w3schools.com/howto/howto_js_filter_lists.asp

Hari Smith 31.05.2019 10:14

А как это отсортировано? В настоящее время он находится в порядке, указанном в массиве - следует ли инвертировать вывод?

Jack Bashford 31.05.2019 10:15

нет, я прошу, чтобы та же функциональность панели поиска отсортировала массив.

Hari Smith 31.05.2019 10:19

вы можете использовать подчеркивание.

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

Hari Smith 31.05.2019 10:23

Что ты имеешь в виду? Какую именно структуру объекта вы ищете, можете ли вы ее описать?

CertainPerformance 31.05.2019 10:24

array['пиво','бурбон,'электрический'']. передайте строку "e" сначала проверьте ее первое вхождение, а затем второе вхождение. ['electric', 'beer'] я хочу, чтобы этот тип вывода. как его достичь

Hari Smith 31.05.2019 10:29
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)  

Другие вопросы по теме