Хитрые методы массивов Array: filter, map, reduce

Рекомендую разобраться с этими методами, т.к. с их помощью можно сделать практически все что угодно с массивами данных

Метод filter создает новый массив с отфильтрованными элементами, то есть из массива удалены так называемые «нежелательные» элементы
Функция, передаваемая как аргумент, возвращает false, если элемент «нежелательный»

//
// proSwift.ru
//

filter (includeElement:(T) -> Bool) -> [T]

Аргументом filter является функция, которая по каким либо критериям внутри себя  решает будет ли  элемент «нежелательный» или  «желательный».

Метод map cоздает новый массив путем трансформации каждого элемента массива во что-то другое

Элемент, в который идет трансформация, может иметь другой тип, чем элемент исходного массива

//
// proSwift.ru
//

map (transform:(T) -> U) -> [U]
let stringified: [String]  = [1,2,3].map {"\($0)"}

В данном случае stringified — массив из строк  [«1″,»2″,»3»]. Перебирая каждый элемент массива функция map создает массив строк с помощью  замыкания {«\($0)»}

 

Метод reduce  cворачивает целый массив до единственного значения

//
// proSwift.ru
//

reduce (initial:U, combine: (U,T) -> U) -> U
let sum: Int  = [1,2,3].reduce(0){$0 +$1}//добавляет числа в массиве

Он берет начальное значение 0 и прибавляет первый элемент массива. То что именно прибавляет задано замыканием {$0 +$1}. Но мы можем использовать любую функцию (U,T) -> U.  Затем результат сложения устанавливается в переменную initial:U и те же действия происходят с остатком массива.  Таким образом sum — это сумма элементов массива.

Метки: , , ,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.