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

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