JavaScript | Как отобрать строки заканчивающиеся на что-то в массиве?

Есть массив из строк:

var massiv = [
   "белый",
   "вкусный",
   "красное",
   "противное",
   "фиолетовая",
   "горькая"
]

Мы хотим отобрать из этого массива строки, которые заканчиваются на определённую последовательность символов. Как это сделать?

Видео

Что будем использовать?

Мы будем пользоваться методом filter() для объектов-прототипов Array. Мы будем пользоваться методом exec() для объектов-прототипов RegExp.

Нам нужно создать условие, которое будет возвращать true или false, когда мы будем сопоставлять конец строки под определённые последовательности символов.

Регулярное выражение оформляется символами / /(между наклонными линиями должен быть шаблон). В регулярных выражениях граница окончания строки обозначается знаком $. Это называется Утверждением (Assertion). Подобных Утверждений в языке JavaScript 8 штук.

Когда мы хотим найти последовательности до конца строки, то мы должны указать перед знаком $ нужные нам символы, так как мы хотим их видеть в строках.

 

Отбираем строки, заканчивающиеся на «ое»

Регулярное выражение будет выглядеть так:

/ое$/

Выполняем отбор элементов из массива со строками:

massiv.filter(i=>/ое$/.exec(i))

В ответ получаем новый массив с нужными нам строковыми элементами.

["красное", "противное"]
Отобрали строки заканчивающиеся на ое - JavaScript
Отобрали строки заканчивающиеся на ое — JavaScript

 

Как это работает?

На нашем массиве (massiv) мы вызываем через точку метод filter(). Этот метод создаст нам новый массив, не повреждая оригинальный. Фильтр пробегает по каждому элементу массива и проверяет условие отбора.

  • Если условие отбора истинно — true, то фильтр закидывает этот элемент и его значение в новый массив.
  • Если условие отбора ложно — false, то фильтр пропускает этот элемент и не добавляет его в новый массив.

Условием у нас является существование объекта, который вернёт нам метод exec(). Если отбор метода возвращает массив, тогда такой элемент попадёт в новый массив. Если возвращает null, то не попадает в новый массив.

 

Другие примеры

Строки, заканчивающиеся на «ый»

massiv.filter(i=>/ый$/.exec(i))
(2) ["белый", "вкусный"]
Отобрали строки заканчивающиеся на ый - JavaScript
Отобрали строки заканчивающиеся на ый — JavaScript

 

Строки, заканчивающиеся на «ая»

massiv.filter(i=>/ая$/.exec(i))
(2) ["фиолетовая", "горькая"]
Отобрали строки заканчивающиеся на ая - JavaScript
Отобрали строки заканчивающиеся на ая — JavaScript

 

Информационные ссылки

JavaScript | Строки (String)

Стандарт ECMAScript — Раздел «22.2.5.2 RegExp.prototype.exec ( string )» — https://tc39.es/ecma262/#sec-regexp.prototype.exec

Стандарт ECMAScript — Раздел «22.2.2.6 Assertion» — https://tc39.es/ecma262/#sec-assertion

Стандарт ECMAScript — Раздел «23.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )» — https://tc39.es/ecma262/#sec-array.prototype.filter

Поделись записью