Удалить одинаковые элементы из массива iOS на Swift 3
Задача
Нужно из массива удалить повторяющиеся элементы. При этом массив может содержать элементы любого типа.
Решение
Для удаления одинаковых элементов из массива следует написать универсальную функцию, которая принимает в качестве параметра аргумент типа «коллекция» и возвращает другой массив.
// // proSwift.ru // // Swift 3 private func uniq<S: Sequence, T: Hashable> (source: S) -> [T] where S.Iterator.Element == T { var buffer = [T]() // возвращаемый массив var added = Set<T>() // набор - уникальные значения for elem in source { if !added.contains(elem) { buffer.append(elem) added.insert(elem) } } return buffer }
Внутри функции мы перебираем элементы исходного массива, и по одному проверяем содержание элемента в наборе added и если его там нет, до добавляем элемент в возвращаемый массив и в набор added. Как вы помните, в наборе не может быть двух одинаковых элементов, поэтому проверка на содержание в этом наборе является флагом добавления в возвращаемый массив.
А нельзя ли: Array(Set(nonUniqArray))