Как фильтровать данные json с несколькими значениями включения

Включает метод, работающий только для одного значения, но я хочу отфильтровать несколько значений с помощью запятой, подобной этой "махмуд, файзан", я получу это значение из пользовательского ввода.

json-данные

[{
    
    "text": "adnan hassan"
}, {
    
    "text": "adnan hassan mahmoud",
}, {
    
    "text": "adnan hassan faizan",
}]

Функция фильтра

const filterFunction = (a) => {
   if (includeKeyword)
     return a.text.includes("mahmoud")
    }
  

Функция фильтра с визуализацией карты

postRes.filter(filterFunction).map((data, index) => (

array.some может помочь

Bravo 18.03.2022 13:37
Поведение ключевого слова "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) для оценки ваших знаний,...
0
1
42
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

Я дал вам два оператора возврата на выбор, в зависимости от того, хотите ли вы сопоставить все части или хотя бы одна часть из того, что было введено:

const filterFunction = (a) => {
   if (includeKeyword)
     const parts = userInput.split(",");
     // if you need the returned element to match *all* parts (AND)
     return parts.every(p => a.text.includes(p.trim());

     // if you need it to match *at least one* part (OR)
     return parts.some(p => a.text.includes(p.trim());
   }
};

для вашего senario вы можете настроить функцию фильтра, чтобы получить второй параметр и использовать array.some:

const filterFunction = (a, searchArray) => {
  if (searchArray.some((v) => a.text.includes(v))) {
   return a;
    }
 };
const result = postRes.filter((item) => filterFunction(item, ["mahmoud", "faizan"]));

console.info("result ", result);

Функция фильтра возвращает логическое значение. Вы можете установить это логическое значение с помощью цикла:

Пример :

const base = [{
    
    "text": "adnan hassan"
}, {
    
    "text": "adnan hassan mahmoud",
}, {
    
    "text": "adnan hassan faizan",
}]

function myFilter(base,query){
  const queries = query.split(",")
  return base.filter((a)=>{
    let doReturn = false;
    queries.forEach((q)=>{
      if (a.text.includes(q)){
        doReturn = true;
      }
    })
    return doReturn;
});
}

console.info(myFilter(base,"faizan,hector,mickey,mahmoud"))

создайте массив из текста поиска с помощью split(','):

const searchParams = searchText.split(',');

затем отфильтруйте массив данных следующим образом:

test — ваш массив данных. searchParams — список параметров поиска:

test.filter(t => searchParams.some(v => t.text.includes(v)))

вот небольшой пример

если вам нравится решать с помощью методов javascript, как указывали многие люди

if (["mahmoud", "faizan"].some((v) => a.text.includes(v))) {
    return a;
  }

если вам нравится регулярное выражение, сделайте так

if (a.text.match(/(mahmoud|faizan)/)){
    return a
  }

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