Задать вопрос
@Denioo

Как вытащить точную строку из массива строк?

Всем привет, подскажите пожалуйста как вытащить точную подстроку из строки?
Допустим есть функция принимающая значение на основе которого мы хотим отфильтровать массив строк.
const arr = ["catboy", "cat", "catman"];

const filtStr = (str) => {
  return arr.filter((item) => item.match(str));
};

console.log(filtStr("cat"));


То есть если я хочу из массива вытащить только строку 'cat', то должна вытаскиваться только 'cat', а вытаскиваются все строки где есть 'cat'. В регулярках к сожалению не особо силен(
Прикрекляю ссылку на codeSandbox

P.s. понял что ошибся с примером.
const arr = ["catboy", "cat", "catman", 'cat-k', 'cat-c'];

и необходимо достать "cat", "cat-k", "cat-c" только по целой части cat?
  • Вопрос задан
  • 260 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 2
@Barrakuda74
console.log(filtStr("^cat$"));
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
\b в регулярках означает границу слова – здесь подойдёт:
const arr = ["catboy", "cat", "cat-man", "man, ?cat! doo"];

const filtStr = (str) => {
  return arr.filter((item) => item.match(new RegExp(`\\b${str}\\b`, "i")));
};

console.log(filtStr("cat")); // [ "cat", "cat-man", "man, ?cat! doo" ]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
const arr = ["catboy", "cat", "catman"];

const filtStr = (str) => {
  return arr.filter((item) => item === str);
};

console.log(filtStr("cat"));


Только смысла от такого фильтра никакого...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы