Подскажите, как методом filter отфильтровать элементы с определенным текстом?

Нужно методом filter отфильтровать массив movies так,чтобы в нём остались только фильмы 2018 года.

const movies = [
  'Титаник (1997)',
  'Чёрная Пантера (2018)',
  'Остров Собак (2018)',
  'Омерзительная Восьмерка (2015)'
];

const moviesFiltered = movies.filter(function (item) {

как здесь правильно прописать return для текстовых данных?

});
    console.log(moviesFiltered);

Ответы (4 шт):

Автор решения: Igor

const movies = [
  'Титаник (1997)',
  'Чёрная Пантера (2018)',
  'Остров Собак (2018)',
  'Омерзительная Восьмерка (2015)'
];

const moviesFiltered1 = movies.filter(item => item.endsWith("(2018)"));
console.log(moviesFiltered1);

const moviesFiltered2 = movies.filter(function(item) {
  return item.endsWith("(2018)");
});
console.log(moviesFiltered2);

→ Ссылка
Автор решения: OPTIMUS PRIME

Подойдет любой метод, находящий / проверяющий подстроки:

const movies = [
  'Титаник (1997)',
  'Чёрная Пантера (2018)',
  'Остров Собак (2018)',
  'Омерзительная Восьмерка (2015)'
];

const ex1 = movies.filter( item => /\(2018\)/.test(item) );
const ex2 = movies.filter( item => item.includes("(2018)") );
const ex3 = movies.filter( item => item.indexOf("(2018)") > -1 );

console.log( ex1, ex2, ex3 );

→ Ссылка
Автор решения: Ivan Didyk

Любое кино, имеющее 2018 в скобках.

const movies = [
  'Movie (2018)',
  'Another movie (year 2018)',
  'Not matched movie (2020)',
  'Demo (1009)',
  'Last one (2018 y.)'
];

const moviesFiltered =  movies.filter(i => /.+\(.*2018.*\)/.test(i))
console.log(moviesFiltered);

→ Ссылка
Автор решения: vla9islove

Для фильтрации элементов массива movies и оставления только тех фильмов, которые были выпущены в 2018 году, можно использовать метод filter() в сочетании с методом includes(), который проверяет, содержит ли строка подстроку.

const moviesFiltered = movies.filter(function (item) {
    return item.includes('(2018)');
});
→ Ссылка