функция Iterable::where

Фильтрует элементы коллекции с помощью пользовательской функции

Синтаксис

Iterable[E]
Iterable.where
(bool f(E element))

Передаваемые параметры

bool f(E element)

Возвращаемое значение

Iterable[E]

Описание

Метод where позволяет получить новую коллекцию (составной объект), содержащий только те элементы исходной коллекции, для которых пользовательская callback-функция bool f(E element) возвращает true.

Данный метод использует "ленивую" инициализацию новой коллекции. До тех пор, пока к элементам нового объекта не будет ни одного обращения, пользовательская функция bool f(E element) вызываться не будет и новые значения получены не будут. Кроме этого, значения элементов не будут кешироваться, и таким образом повторная итерация по новой коллекции будет приводить к повторному вызову пользовательской callback-функции.

Заметки

Пример

void print_array(array) {
  for(var x in array) {
    print (x);
  }
}

void main() {
  // инициализируем массив с данными
  var array = [0,1,2,3,4,5,6,7,8,9];
  
  // добавляем в новую коллекцию, только четные числа
  // получаем массив [0,2,4,6,8]
  print_array(
    array.filter(
      (arrayItem) {
        return ((arrayItem % 2) == 0);
      }
    )
  );


  // добавляем в новую коллекцию только строки содержащие букву 'o'
  // получаем массив ['orange','lemon','tomato']
  print_array(
    ['apple','orange','lemon','tomato'].filter(
      (arrayItem) {
        return arrayItem.contains('o');
      }
    )
  );
}

Смотрите также

Iterable::firstWhere - Возвращает первый элемент коллекции, удовлетворяющий пользовательской функции
Iterable::lastWhere - Возвращает последний элемент коллекции, удовлетворяющий пользовательской функции
Iterable::singleWhere - Возвращает элемент, удовлетворяющий пользовательской функции

Официальная документация (английский)